我希望将贪婪匹配替换为“a”的连续出现'a'或'0'连续出现'b'的连续出现。如果我做
/a{,m}|b{,n}/
它不会起作用,因为当我有'b'序列时,它会与'a {,m}'匹配,并且不会查看替代'b {,n}',它将不会一场贪婪的比赛。
答案 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'