最近,在网络*
的某个地方,我找到了一个正则表达式的参考,它描述了贪婪的“第三条道路”,两者都不同
来自贪婪的(.*)
和懒惰的(.*?)
匹配。
我现在尝试搜索SO,Google搜索,甚至搜索我的浏览器历史记录,但无济于事。
任何人都可以很好地猜测我看到的是什么吗?
.*+
),我相信它甚至有一个名称(类似于,但可能不是,“被动地贪婪”)。 / p>
*
我很欣赏“在网络上的某个地方”与“在巴别图书馆”或“在曼德尔布鲁特集合中”一样有用,但请尽量提供帮助
答案 0 :(得分:5)
我认为你指的是“过度”匹配。 Java在此页面上描述了它:http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html
贪得无厌的量词 尽可能多地匹配 即使这样做也会退缩 允许整体匹配成功。
语法与您描述的(。* +)相同。
答案 1 :(得分:4)
这可能吗? http://www.regular-expressions.info/repeat.html
An Alternative to Laziness
In this case, there is a better option than making the plus lazy. We can use a greedy plus and a negated character class: <[^>]+>.
答案 2 :(得分:2)
有各种不同的正则表达式包。 PCRE(与Perl兼容的正则表达式)在Perl,Java,PHP和其他语言中使用(或多或少)。 PCRE man page可能被视为最终参考。它描述了占有量词(例如* +和++),它们是原子团的简写。
答案 3 :(得分:1)
嗯,不完全是参考,但仍然很好。 Mastering Regular Expressions
O'Reilly还有一本“参考”书,但我无法就此作证。刚刚第一次看到它。
答案 4 :(得分:0)
我总是在我的立方体中保留这个regular expressions cheat sheet的副本。
答案 5 :(得分:0)