限定符{3,5}?
意味着它将首先尝试匹配 3 个匹配项,然后查看表达式的其余部分是否匹配。如果表达式的其余部分失败,它将回溯并尝试 4,最后是 5。
贪婪的版本{3,5}
会以相反的顺序尝试匹配——最长的在前。
请注意,贪婪不会影响字符串是否匹配。它只影响引擎执行搜索的顺序,如果有捕获组,则影响捕获的内容。
这是一个演示差异的示例。想象一下你有字符串aaaaabc
。
(a{3,5})(\w*)
将捕获aaaaa
和bc
。(红字)
(a{3,5}?)(\w*)
将捕获aaa
和aabc
。(红字)