在正则表达式中,我们有贪婪和懒惰的量词。贪心量词{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
(在本例中为 4 in {2,4}?
)是否有任何用处?结果不总是一样{2,}?
吗?
是否存在传递最大值(如 4 in {2,4}?
)在惰性量词中有用的情况?
免责声明:我实际上是使用正则表达式在 Vim ( /a{-2,4}
) 内部进行搜索,而不是使用任何脚本语言。我想问题的原理还是一样的。