Regex 行中的正则表达式异常
假设我有一个正则表达式:Regex 行中的正则表达式异常,regex,exception,Regex,Exception,假设我有一个正则表达式: "|<pizza><onion>(.*)</onion><tomato>(.*)</tomato></pizza>|" “|(.*)(.*)|” 这一行匹配几行并返回它(php:preg\u match\u all)。现在我想为洋葱中的(.*)添加一个异常:洋葱可能没有值“default”。如何排除此选项?请尝试: ~<pizza><onion>((?:(?!</o
"|<pizza><onion>(.*)</onion><tomato>(.*)</tomato></pizza>|"
“|(.*)(.*)|”
这一行匹配几行并返回它(php:preg\u match\u all)。现在我想为洋葱中的(.*)添加一个异常:洋葱可能没有值“default”。如何排除此选项?请尝试:
~<pizza><onion>((?:(?!</onion>|default).)*)</onion><tomato>((?:(?!</tomato>).)*)</tomato></pizza>~s
其中,~
是分隔符
如果您的源代码有注释,
,或者可以有任意数量的嵌套标记,我强烈建议您改用某种(X)HTML ish解析器。您使用正则表达式解析XML吗?如果是,请不要。请始终使用某种XML解析器。“|(...|!默认值)(.*)|”不起作用?@Kevin,尝试时会发生什么?
~
<pizza>
<onion>
(
(?:(?!</onion>|default).)* # anything not containing `</onion>` and `default`
)
</onion>
<tomato>
(
(?:(?!</tomato>).)* # anything not containing `</tomato>`
)
</tomato>
</pizza>
~sx # enable DOT-ALL (s), and COMMENTS (x)