在正则表达式中,什么是回溯/向后引用?
- 论坛
- 在正则表达式中,什么是回溯/向后引用?
33 浏览
匿名的
0 Comments
正则表达式中的回溯引用(back referencing)和回溯(backtracking)是两个不同的概念。回溯引用是指在代码中稍后使用捕获的结果,例如使用回溯引用匹配单引号或双引号括起来的字符串。回溯则是指在正则表达式匹配过程中发生匹配失败时的自然回溯。
回溯引用的例子是使用(['"]).*?\1
匹配单引号或双引号括起来的字符串。它使用回溯引用\1引用了开放符号(单引号或双引号),以便在结尾处进行匹配。
而回溯是指当正则表达式匹配失败时,进行的回溯过程。例如,如果我想使用表达式.+b
来匹配字符串aaaaaabcd
,那么正则表达式首先会匹配.+
部分,将aaaaaabc
与之匹配,并将b
与剩下的d
进行比较。由于匹配失败,它会进行一次回溯,并将aaaaaab
与.+
进行匹配,然后将最后的b
与c
进行比较。这次匹配也失败了,所以它再次回溯并尝试将aaaaaa
与.+
匹配,然后将b
与b
匹配成功。
关于回溯引用和回溯的更详细的解释可以在community.appway.com/screen/kb/article/…找到。