需要单个正则表达式来查找
在XML文档中。
发布于 2011-11-12 05:51:13
通常,您需要一个xml解析器来处理xml文档。正则表达式不足以处理所有情况。。
对regexes使用perl语法:
m{
[ ][ ] # double spaces
|
\t # tab
|
$\s*$ # extra enter separated only by whitespace. Note: requires `m` flag
|
# XXX: it works only on simple xml
<[^<>]*$[^<>]*> # line break inside tag
|
# XXX: it works only on simple xml
[ ]</[^<>]+> |
</[^<>]+>[ ] # space after/before closing tag
}mxg;发布于 2011-11-11 13:40:31
很抱歉,这不会是一个很好的答案,但也许我能帮上一点忙。现在,对于步骤1、2和3,要匹配这样的步骤并不困难。
标签是\t
新行为\r或\n
空白(空格、制表符或新行)为\s。
因此1制表符:(T)两个空格= (\s\s)或(s{2})和一条额外的行通常由一行中的两个行分隔,但有时它们可以用空格分隔,所以请注意.(\*\r)\n*\n)
要将其结合起来,步骤1/2/3包含了捕获组:
(\r\s*\r)|(\n\s*\n)|(\t)|(\s{2})但是4和5呢?
如果<没有对应的>,或者不是文档结构的一部分,那么它们都需要能够在正则表达式中回溯。这种情况可能发生在无效的XML中,或者发生在CDATA部分等等。它变得很复杂,但是可以用递归正则表达式来完成。但是,我不知道c++中有一个正则表达式库支持递归。对不起,但是手工解析字符串数据可能要容易得多。
现在,一些正则表达式方言是不同的,所以您的里程可能会有所不同。作为参考,虽然我倾向于使用http://www.regular-expressions.info/quickstart.html
https://stackoverflow.com/questions/8094527
复制相似问题