另类贪婪的比赛

时间:2011-03-31 15:51:19

标签: regex greedy regex-greedy quantifiers

我希望将贪婪匹配替换为“a”的连续出现'a'或'0'连续出现'b'的连续出现。如果我做

/a{,m}|b{,n}/

它不会起作用,因为当我有'b'序列时,它会与'a {,m}'匹配,并且不会查看替代'b {,n}',它将不会一场贪婪的比赛。

2 个答案:

答案 0 :(得分:1)

如果我了解您要正确执行的操作,那么/(?:a{1,m}|b{1,n})?/

怎么样?

它会匹配连续a的字符串(最多 m 次)或连续b的字符串(最多 n 次),或者没有任何关系全部由于可选?

答案 1 :(得分:0)

我认为默认情况下,量词是贪婪的,从左到右。因此,在非a存在的情况下,你在交替匹配中得到a {0,m}并不是一个贪婪的问题。如果它们首先存在,它将与'm'相匹配。

贪婪似乎比有人猜测的更复杂。

'aaaaaaaaa'=〜/(a{1,2}) (a{1,2}?) (a{1,4}) (a{4,12}+)/x&&
  打印"'$1', '$2', '$3', '$4'“;

'aa', 'a', 'aaa', 'aaaa'