我正在写一个与多个术语匹配的RegEx:
((a)|(b)|(c(1|2)))x
我希望a
和c1|2
项仅在后跟时才匹配x
,但在b
的情况下,我想在那时和那里停止匹配,最后忽略x
。
一种简单的解决方案是移出b
该模式,但是在我的情况下,我有多个嵌套级别,这使得这不可能。
因此,有没有办法打破RegEx并强制解析器返回当前匹配项,而忽略表达式的其余部分?
您可以使用回溯控制动词(*ACCEPT)
:
(?:a|b(*ACCEPT)|c[12])x
(*ACCEPT)
(*ACCEPT:arg)
此模式不匹配任何内容,并导致在
(*ACCEPT)
遇到该模式时成功匹配结束,而不管字符串中实际上是否还有更多要匹配的内容。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句