【问题标题】:Lazy, Greedy, or What? Looking for a definitive Regex reference [duplicate]懒惰,贪婪,还是什么?寻找明确的正则表达式参考 [重复]
【发布时间】:2009-02-19 19:48:18
【问题描述】:

最近,在 web* 的某个地方,我找到了一个正则表达式的参考,它描述了贪婪的“第三种方式”,两者都不同 从贪婪的(.*) 和懒惰的(.*?) 匹配。

我现在尝试搜索 SO、谷歌搜索,甚至搜索我的浏览器历史记录,但无济于事。

谁能猜出我看到了什么?


澄清:它指的是对我来说是一个新结构(类似于.*+),我相信它甚至有一个名称(类似于但可能不是“被动贪婪”)。


*我很欣赏“网络上的某个地方”与“在巴别图书馆中”或“在曼德布罗集中”一样有用,但请尝试提供帮助

【问题讨论】:

  • 好吧,好吧,六年后,终于有人否决了这个问题。您愿意与我们分享您的批评吗?这样我们就可以学习,提高。或者,如果您只是度过了糟糕的一天,您可以在生活变得更好时再次投票。
  • dv 可能是因为您的问题含糊不清,没有上下文。这个页面对研究人员来说价值很低,因为它已经在 SO 上运行了十多年,而且在页面上的任何地方都很少有人支持。

标签: regex regex-greedy


【解决方案1】:

我认为您指的是“姿势”匹配。 Java 在此页面上对其进行了描述:http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html

占有量词,贪婪地 尽可能匹配和不匹配 退后,即使这样做会 让整体匹配成功。

语法和你描述的一样 (.*+)。

【讨论】:

  • 很抱歉没有接受您的回答,但我相信 Bennett McElwee 有更好的参考。
【解决方案2】:

这可能吗? http://www.regular-expressions.info/repeat.html

An Alternative to Laziness

在这种情况下,有一个比让 plus 变得懒惰更好的选择。我们可以使用一个贪心的加号和一个否定的字符类:]+>。

【讨论】:

  • 这是一个很好的参考,但似乎没有我认为我看到的......谢谢
  • 事实上,它有我正在寻找的东西,在教程的后面一点。抱歉,我不能再次投票...
  • 我只看到一个加号;应该有两个:]++>
【解决方案3】:

有各种不同的正则表达式包。在 Perl、Java、PHP 和可能的其他语言中(或多或少)使用 PCRE(Perl 兼容的正则表达式)。 PCRE man page 可能被视为权威参考。它描述了所有格量词(例如 *+ 和 ++),它们是原子组的简写。

【讨论】:

    【解决方案4】:

    嗯,不完全是参考,但仍然很好。 Mastering Regular Expressions

    还有一本来自 O'Reilly 的“参考”书,但我不能就此作证。第一次看到。

    【讨论】:

      【解决方案5】:

      我总是将这个regular expressions cheat sheet 的副本放在我的立方体中。

      【讨论】:

        【解决方案6】:

        谢谢大家。恢复记忆的关键是“占有欲”,而不是“被动”。

        这里有几个有用的参考资料:

        【讨论】:

          猜你喜欢
          • 2012-11-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多