打破正则表达式匹配的中间模式

马库斯

我正在写一个与多个术语匹配的RegEx:

((a)|(b)|(c(1|2)))x

我希望ac1|2项仅在后跟时才匹配x,但在b的情况下,我想在那时和那里停止匹配,最后忽略x

一种简单的解决方案是移出b该模式,但是在我的情况下,我有多个嵌套级别,这使得这不可能。

因此,有没有办法打破RegEx并强制解析器返回当前匹配项,而忽略表达式的其余部分?

甲肾上腺素

您可以使用回溯控制动词(*ACCEPT)

(?:a|b(*ACCEPT)|c[12])x

perldoc perlre

(*ACCEPT) (*ACCEPT:arg)

此模式不匹配任何内容,并导致在(*ACCEPT)遇到模式时成功匹配结束,而不管字符串中实际上是否还有更多要匹配的内容。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章