量詞

量詞允許指定重複字串的計數。

  • 零或一:

    /a?/
    
  • 零或多:

    /a*/
    
  • 一個或多個:

    /a+/
    
  • 確切數字:

    /a{2,4}/ # Two, three or four
    /a{2,}/  # Two or more
    /a{,4}/  # Less than four (including zero)
    

預設情況下,量詞是貪婪的 ,這意味著他們可以在儘可能多的角色中進行匹配。通常情況下這並不明顯:

/(?<site>.*) Stack Exchange/ =~ 'Motor Vehicle Maintenance & Repair Stack Exchange'

指定的捕獲組 site 將按預期設定為機動車維護和維修。但是如果’Stack Exchange’是字串的可選部分(因為它可能是’Stack Overflow’),那麼天真的解決方案將無法按預期工作:

/(?<site>.*)( Stack Exchange)?/

這個版本仍然匹配,但命名捕獲將包括’Stack Exchange’,因為*貪吃這些角色。解決方案是新增另一個問號以使*變得懶惰:

/(?<site>.*?)( Stack Exchange)?/

? 附加到任何量詞將使其變得懶惰