繁体   English   中英

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

[英]PHP: How to get all regular expression matches?

是否有可能在PHP中获得所有正则表达式匹配项? 我需要一个脚本,例如,匹配abc中的.+并给出结果:

Array( abcabbcabc

问题是重叠的,您想匹配“ 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM