不合理的正则表达式

时间:2012-05-18 22:22:03

标签: regex

我指的是正则表达式备忘单。 它说

{3,5}表示3,4,and 5

{3,5}?表示3,4,5 ungreedy +

ungreedy +表示什么?

1 个答案:

答案 0 :(得分:10)

quanitifier {3,5}?意味着它将首先尝试匹配3个匹配项,然后查看表达式的其余部分是否匹配。如果表达式的其余部分失败,它将回溯并尝试4,最后是5。

贪婪的版本{3,5}将以相反的顺序尝试匹配 - 最长的匹配。

请注意,贪婪不会影响字符串是否匹配。它只影响引擎执行搜索的顺序,以及捕获组的捕获内容。

这是一个展示差异的例子。想象一下,你有字符串aaaaabc

  • (a{3,5})(\w*)将捕获aaaaabc(rubular)
  • (a{3,5}?)(\w*)将捕获aaaaabc(rubular)