量詞
量詞允許指定重複字串的計數。
-
零或一:
/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)?/