在PHP中是否可能得到所有正则表达式匹配?我需要一个脚本,例如,在
Array(
abc
中匹配.+
并给出以下结果:Array(
a
,b
,c
,ab
,bc
,abc
)abc
中匹配.+
并给出以下结果:a
,b
,c
,ab
,bc
,abc
)preg_match_all('/./', 'abc', $matches);
str_split('abc');
preg_match_all('/.{2}|./', 'abc', $matches);
我不确定正则表达式中是否有一个定义好的“所有匹配项”的集合。
例如,如果您的模式是.+.+
,第一个.+
匹配什么?第二个匹配什么?
一个字符串可能以多种不同的方式与特定的RE绑定匹配,并且由RE的不同部分捕获的子字符串可能取决于贪婪匹配与非贪婪匹配等因素。但是,没有定义的方法来迭代所有不同的可能捕获。要做到这一点,您必须大幅改变RE的处理方式。
abc
上执行 .+.+
将会得到数组(ab
, bc
, abc
)。 - Tom