【发布时间】:2020-05-11 09:43:20
【问题描述】:
给定这个字符串
xxv jkxxxxxxxxxxxxxxx xxyu xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxAp oSxx
xxAp oSxxxxxxxxxxxxxxxxxxxxxj xxxxxxxxxuixxxxxxxxxxx axxxxxxxxxxxxxxxxxx
还有这个正则表达式
^[^\r\n]*Ap oS[^\r\n]*
我希望在任何地方匹配任何包含Ap oS 的行,如here 所示,并且它可以做到这一点。
现在,通过查看debugger,可以看到第一个匹配需要 16 步,第二个需要 80 步,因为回溯,如果我理解正确的话。
我的问题是,如何编写这个正则表达式来减少步数?
我想用(?!Ap oS)* 替换第一个[^\r\n]* 以匹配不是Ap oS 的所有内容,直到找到Ap oS,但我不确定我是否理解概念或语法错误,或者两者都有。
感谢任何帮助
【问题讨论】:
标签: regex performance pcre