量词
量词允许指定重复字符串的计数。
-
零或一:
/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)?/