哪个正则表达式需要回溯?

时间:2011-11-15 06:36:57

标签: regex backtracking

实现正则表达式匹配有三种不同的解决方案:DFA,NFA和Backtracking。我正在寻找例子:

  • 一个正则表达式,可以通过DFA解决,原因是DFA足够的原因。
  • 正则表达式,需要NFA以及NFA必要的原因。
  • 一个正则表达式,需要回溯以及为什么需要回溯的原因。

关于这个主题的一些好文献的推荐也会很好。

2 个答案:

答案 0 :(得分:3)

我猜单词回溯的含义不止一个 - 即使'.*a'必须回溯以匹配字符串"lalaiiiiiii" (因为 .* 将首先匹配整个字符串 - 因此 a 将无法匹配任何内容 - 只有这样它才会一次放弃一个字符,因此最终匹配将是 "lala"

我强烈推荐http://www.regular-expressions.info/

答案 1 :(得分:-2)

到目前为止我发现的是:

  • 每个可以使用NFA实现的正则表达式也可以使用DFA实现。每个NFA都可以转换为DFA。

  • 需要回溯的正则表达式是正则表达式,包含/(a)\1/之类的反向引用。