什么是正则表达式回溯?
您能提供一个例子吗?
什么是正则表达式回溯?
您能提供一个例子吗?
回溯引用和回溯是两件不同的事情。前者是在代码后面使用捕获结果,例如:
(['"]).*?\1
这将匹配单引号或双引号括起来的字符串(忽略转义字符)。它使用反向引用来引用开放符号(单引号或双引号),以便可以在结尾处进行匹配。
另一方面,回溯是正则表达式在匹配过程中自然情况下发生的,当匹配失败时。例如,如果我正在匹配表达式
.+b
与字符串相比较
aaaaaabcd
然后它将首先在 .+
上匹配 aaaaaabc
,并将 b
与剩余的 d
进行比较。这会失败,因此它会回溯一点,并为 .+
匹配 aaaaaab
,然后将最后一个 b
与 c
进行比较。这也失败了,因此它再次回溯,并尝试对 .+
使用 aaaaaa
,然后将 b
与 b
匹配成功。