Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:如何获得所有正则表达式匹配?_Php_Regex - Fatal编程技术网

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

PHP:如何获得所有正则表达式匹配?,php,regex,Php,Regex,可以在PHP中获取所有正则表达式匹配项吗?我需要一个脚本,例如,匹配abc中的+,并给出结果: 数组(a,b,c,ab,bc,abc)我不确定正则表达式中是否定义了一组“所有匹配项” 例如,如果您的模式是+。++?第一个+匹配的是什么?第二个匹配的是什么 一个字符串可能以多种不同的方式匹配一个特定的重绑定,而哪个子字符串被重绑定的不同部分捕获可能取决于贪婪匹配和非贪婪匹配。但是没有明确的方法来迭代所有不同的可能捕获。要做到这一点,您必须极大地改变REs的处理方式。我知道这个问题有点老了,但可能仍

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


数组(
a
b
c
ab
bc
abc

我不确定正则表达式中是否定义了一组“所有匹配项”

例如,如果您的模式是
+。++
?第一个
+
匹配的是什么?第二个匹配的是什么


一个字符串可能以多种不同的方式匹配一个特定的重绑定,而哪个子字符串被重绑定的不同部分捕获可能取决于贪婪匹配和非贪婪匹配。但是没有明确的方法来迭代所有不同的可能捕获。要做到这一点,您必须极大地改变REs的处理方式。

我知道这个问题有点老了,但可能仍有人需要答案


查看函数的
标志
参数

问题在于重叠,您希望匹配'ab'和'bc',这是使用简单的正则表达式无法做到的。然而,请考虑以下内容:

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

preg_match_all('/./', 'abc', $matches);
str_split('abc');
给你:数组('a','b','c')

下面将使用剩余的单个字符拆分字符对:

preg_match_all('/.{2}|./', 'abc', $matches);
给你:数组('ab','c')


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

我认为这就是您想要的:这不是正则表达式的目的,除了编写自己的(子集)之外,没有可靠的方法来实现这一点regex解析器,并执行与所有其他regex实现不同的操作。@shamittomar不,我认为很清楚,
+
只是一个例子。@Wrikken也许你应该将该评论作为答案发布。
+.+
上的
abc
将给出数组(
ab
bc
abc
)我理解你的答案,但我仍然希望有一个解决方案,就像一个定制的图书馆,可以回答我的祈祷:)