【问题标题】:In regular expressions, what is a backtracking / back referencing?在正则表达式中,什么是回溯/反向引用?
【发布时间】:2012-01-25 22:51:12
【问题描述】:

使用正则表达式回溯是什么意思?

另外,你能举个例子吗?

【问题讨论】:

标签: regex


【解决方案1】:

反向引用和回溯是两个不同的东西。前者是在后面的代码中使用捕获的结果,例如

(['"]).*?\1

这将匹配单引号或双引号字符串(暂时忽略转义)。它使用反向引用来引用打开的符号(单引号或双引号),因此它可以在末尾匹配。

另一方面,回溯是正则表达式在匹配过程中自然而然地在匹配失败时所做的事情。例如,如果我匹配表达式

.+b

反对字符串

aaaaaabcd

然后它将首先匹配.+ 上的aaaaaabc,并将b 与剩余的d 进行比较。这失败了,所以它会回溯一点并匹配.+aaaaaab,然后将最终的bc 进行比较。这也失败了,所以它再次回溯并尝试 aaaaaa.+ 和匹配 bb 并成功。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2017-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-21
  • 1970-01-01
  • 1970-01-01
  • 2017-04-01
相关资源
最近更新 更多