1
6
在这种情况下,最好使用非贪婪量词。
以这个字符串为例
非贪婪量词 \[\[.+?\]\] Atom # 1 2 3 4 5
展望未来: \[\[(?:(?!\]\]).)+\]\] Atom # 1 2 3 4 5 6 7
所以看起来非贪婪量词要做的工作更少。 免责声明:这是一个人工示例,实际性能可能会有所不同,具体取决于regex引擎的输入、实际表达式和实现。我只有98%的把握,我在这里概述的是实际发生的事情,所以我愿意改正。另外,和所有的性能技巧一样,不要把这当作表面价值,如果你想确定的话,做你自己的基准比较。 |
2
3
另一种变体:
它既不使用非贪婪量词,也不使用look aheads。它允许一个
这种模式最好与FSA编译regex引擎一起使用。在回溯引擎上,它可能会比不贪婪的变体慢。 |
3
1
你用哪种正则表达式?如果它支持所有格量词,有一个更好的选择:
Java、JGSoft、PCRE(PHP)、Oniguruma(Ruby 1.9)和perl5.12风格支持所有格量词。所有这些口味也都支持原子团,可以用来达到同样的效果:
NET风格支持原子组,但不支持所有格量词。 |
4
0
我认为最好使用非贪婪限定符。你确定你读到的那篇文章没有说“小心 “匹配吗?” |
wonghenry · 另一个选择中的正则表达式选择 7 年前 |
Seamus · 正则表达式以查找字符串中最后一次出现的模式 7 年前 |
Dzmitry · regex贪婪匹配以字符或字符串结尾[重复] 8 年前 |
Chlodwig Radulf · Regex…尽可能少 8 年前 |
GM. · 如果存在代码,则使用regex获取文本 8 年前 |
Savan Patel · 查找reg ex中的特定单词和特殊字符 8 年前 |
linvi · Regex Or和贪婪 9 年前 |
user2745246 · Regex以避免分隔字符串中的数据重复? 9 年前 |