在正则表达式中,我们有贪婪和懒惰量词。贪婪量词
如果我有一组字符串:
{n,m}
匹配前面的原子/字符/组,最少n次,最多m次,包括n和m。如果我有一组字符串:
a
aa
aaa
aaaa
aaaaaaaaaa
使用a{2,4}
,它会匹配:
- 第一行没有
- 第二行是aa
- 第三行是aaa
- 第四行是aaaa
- 第五行是(aaaa), (aaaa)和(aa)
这很有意义。
然而,如果我使用惰性量词a{2,4}?
,我得到:
- 第一行没有
- 第二行是aa
- 第三行是aa
- 第四行是(aa)和(aa)
- 第五行是(aa), (aa), (aa), (aa)和(aa)
这实际上是有意义的。它找到可能匹配最少的数量。
我想澄清的部分 - 是否有任何用处以 {n,m}?
的形式传递任何惰性量词,其中m
是最大值(在这种情况下,{2,4}?
中的4)?结果难道不总是与{2,}?
相同吗?
在懒惰量词中,是否存在通过传递最大值(例如{2,4}
中的4)有用的情况?
免责声明:我实际上是在Vim中使用正则表达式进行搜索(/a{-2,4}
),而不是在任何脚本语言中。我认为问题的原理仍然相同。