Lil*_*ard 70
反向引用和回溯是两回事.前者使用稍后在代码中捕获的结果,例如
(['"]).*?\1
Run Code Online (Sandbox Code Playgroud)
这将匹配单引号或双引号字符串(暂时忽略转义).它使用反向引用来引用开放符号(单引号或双引号),以便它可以匹配最后的符号.
另一方面,回溯是正常表达式在匹配失败时匹配过程中自然会做的事情.例如,如果我匹配表达式
.+b
Run Code Online (Sandbox Code Playgroud)
反对字符串
aaaaaabcd
Run Code Online (Sandbox Code Playgroud)
那么它会首先匹配aaaaaabc在.+和比较b反对剩余d.这种失败,所以它回溯了一下,相匹配aaaaaab的.+,然后比较最终的b反对c.这也会失败,所以它再次回溯,并试图aaaaaa对.+与比赛的b对抗b和成功.