量词允许指定重复字符串的计数。
零或一:
/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)?/
附加?到任何量词都会使其变得懒惰。