[英]PHP: How to get all regular expression matches?
是否有可能在PHP中获得所有正则表达式匹配项? 我需要一个脚本,例如,匹配abc
中的.+
并给出结果:
Array( a
, b
, c
, ab
, bc
, abc
)
问题是重叠的,您想匹配“ ab”和“ bc”,而这是简单正则表达式无法实现的。 但是请考虑以下内容。
您可以使用以下任一行拆分每个字符:
preg_match_all('/./', 'abc', $matches);
str_split('abc');
给你:array('a','b','c')。
下面将用剩下的单个字符分割成对的字符:
preg_match_all('/.{2}|./', 'abc', $matches);
给你:array('ab','c');
因此,您可以玩弄这些的组合/变体以达到目标。
我不确定正则表达式中是否有一组已定义的“所有匹配项”。
例如,如果您的模式是.+.+
怎么办? 什么是第一个.+
匹配的? 第二个是什么?
字符串可以以多种不同方式匹配特定的RE绑定,并且RE的不同部分捕获的子字符串可能取决于贪婪与非贪婪匹配。 但是没有定义的方法可以迭代所有可能的捕获。 您必须极大地改变RE的处理方式。
我知道这个问题有点老了,但仍然可能有人需要答案。
查看preg_match_all函数的flags
参数
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.