最大m在懒惰量词{n,m}中有什么用



在regex中,我们有贪婪和懒惰的量词。贪婪量词{n,m}匹配前面的原子/字符/组,最小出现次数为n次,最大出现次数为m次,包括n次。

如果我有一个字符串集合:

a
aa
aaa
aaaa
aaaaaaaaaa

a{2,4}匹配:

  • 第一行没有任何内容
  • aa秒
  • aaa在第三
  • aaaa在第四
  • 第五行的(aaaa(、(aaaa

这很有道理。

然而,如果我有一个懒惰的量词a{2,4}?,我得到:

  • 第一行没有任何内容
  • aa在第二条线上
  • aa在第三条线上
  • 第四行的(aa(和(aa(
  • 第五行上的(aa(,(aa(、(aa(和(aa(

这确实有道理。它找到尽可能少的匹配。

我想澄清的部分是,给{n,m}?形式的任何懒惰量词传递一个最大值m(在这种情况下,是{2,4}?中的4(有什么用处吗?结果不是总是{2,}?相同吗?

在惰性量词中,是否存在传递最大值(如{2,4}?中的4(有用的情况?

免责声明:我实际上是在使用正则表达式搜索Vim(/a{-2,4}(内部,而不是使用任何脚本语言。我认为问题的原则仍然是一样的

当您需要考虑延迟量化表达式后面的时,这很重要。惰性用于防止字符在串联中被后面的表达式消耗。考虑字符串aaaaab:

  1. 字符串与a{2,4}?b不匹配,因为a{2,4}无法匹配的a太多
  2. 该字符串由a{2,}?b匹配,因为它可以根据需要匹配任意多个a

相关内容

  • 没有找到相关文章

最新更新