簡體   English   中英

惰性量詞 {n,m} 中的 max m 有什么用?

[英]What is the use of max m in the lazy quantifiers {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}? )? 結果不是總是{2,}? ?

是否存在傳遞最大值(如{2,4}? )在惰性量詞中有用的情況?

免責聲明:我實際上是使用正則表達式在 Vim ( /a{-2,4} ) 中搜索,而不是使用任何腳本語言。 我想問題的原理還是一樣的。

當您需要考慮惰性量化表達式之后的內容時,這一點很重要。 惰性用於防止字符被串聯中的后續表達式消耗。 考慮字符串aaaaab

  1. 該字符串與a{2,4}?b不匹配,因為a {2,4 a{2,4}匹配的 a 太多。
  2. 該字符串由a{2,}?b匹配,因為它可以匹配盡可能多a

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM