量词

量词允许指定重复字符串的计数。

  • 零或一:

    /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)?/

? 附加到任何量词将使其变得懒惰