【问题标题】:Which regular expression requires backtracking?哪个正则表达式需要回溯?
【发布时间】:2011-11-15 06:36:56
【问题描述】:

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

  • 一个正则表达式,可以用 DFA 解决,以及为什么 DFA 就足够了。
  • 一个正则表达式,它需要 NFA 以及需要 NFA 的原因。
  • 一个正则表达式,需要回溯以及需要回溯的原因。

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

【问题讨论】:

标签: regex backtracking


【解决方案1】:

我猜backtracking这个词有不止一种含义——即使'.*a'必须回溯以匹配字符串"lalaiiiiiii" (因为 .* 将首先匹配整个字符串 - 所以 a 不会匹配任何东西 - 只有这样它才会一次放弃一个字符,所以最终匹配是 "lala")

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

【讨论】:

    【解决方案2】:

    到目前为止我发现的是:

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

    • 需要回溯的正则表达式是正则表达式,其中包含像/(a)\1/这样的反向引用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-06
      • 1970-01-01
      • 1970-01-01
      • 2015-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多