我想对“a”的零到“m”个连续出现或“b”的零到“n”个连续出现的替代进行贪婪匹配。如果我做
/a{,m}|b{,n}/
它不起作用,因为当我有 'b' 序列时,它将与 'a{,m}' 匹配,而替代的 'b{,n}' 将不会被查看,也不会是贪婪匹配.
我想对“a”的零到“m”个连续出现或“b”的零到“n”个连续出现的替代进行贪婪匹配。如果我做
/a{,m}|b{,n}/
它不起作用,因为当我有 'b' 序列时,它将与 'a{,m}' 匹配,而替代的 'b{,n}' 将不会被查看,也不会是贪婪匹配.
如果我了解您要正确执行的操作,那么/(?:a{1,m}|b{1,n})?/
它将匹配一串连续的 a(最多m次)或一串连续的 b(最多n次),或者由于可选的?
.
我认为默认情况下,量词是贪婪的,从左到右。因此,在非存在的情况下,您在交替匹配中遇到 a{0,m} 并不是一个真正的贪婪问题a
。如果他们先出现,它会匹配到'm'a's。
贪婪似乎比人们想象的要复杂。
'aaaaaaaaaa' =~ /(a{1,2}) (a{1,2}?) (a{1,4}) (a{4,12}+)/x
&&
print "'$1', '$2', '$3', '$4'
";
'aa', 'a', 'aaa', 'aaaa'