使用正则表达式回溯是什么意思?
另外,你能提供一个例子吗?
答案 0 :(得分:64)
反向引用和回溯是两回事。前者使用稍后在代码中捕获的结果,例如
(['"]).*?\1
这将匹配单引号或双引号字符串(暂时忽略转义)。它使用反向引用来引用开放符号(单引号或双引号),以便它可以匹配最后的符号。
另一方面,回溯是正常表达式在匹配失败时匹配过程中自然会做的事情。例如,如果我匹配表达式.+b
反对字符串
aaaaaabcd
然后它将首先与aaaaaabc
上的.+
匹配,并将b
与剩余的d
进行比较。这会失败,因此会稍微回溯并匹配aaaaaab
的{{1}},然后将最终的.+
与b
进行比较。此操作也会失败,因此会再次回溯并尝试c
aaaaaa
,.+
与b
匹配并成功。