PHP:如何获得所有正则表达式匹配?

时间:2010-09-01 20:05:45

标签: php regex

是否可以在PHP中获取所有正则表达式匹配?我需要一个脚本,例如,匹配.+中的abc并提供结果:

数组(abcabbcabc

3 个答案:

答案 0 :(得分:1)

我不确定正则表达式中是否存在一组已定义的“所有匹配”。

例如,如果您的模式是.+.+怎么办?第一个.+匹配的内容是什么?第二个匹配的是什么?

字符串可以以多种不同方式匹配特定RE绑定,并且RE的不同部分捕获哪个子字符串可能取决于诸如贪婪与非贪婪匹配之类的事情。但是没有定义的方法来迭代所有不同的可能捕获。你必须大大改变处理RE的方式才能做到这一点。

答案 1 :(得分:1)

问题在于重叠,你想要匹配'ab'和'bc',你将无法使用简单的正则表达式。但请考虑以下内容。

您可以使用以下任一行拆分每个字符:

preg_match_all('/./', 'abc', $matches);
str_split('abc');

给你:数组('a','b','c')。

以下内容将使用剩余的单个字符分割成对的字符:

preg_match_all('/.{2}|./', 'abc', $matches);

给你:array('ab','c');

因此,您可以使用这些的组合/变体来实现您的结果。

答案 2 :(得分:0)

我知道这个问题有点陈旧,但仍有可能有人需要答案。

查看preg_match_all函数

flags参数