Php 正则表达式在一个匹配中获得所有匹配

Php 正则表达式在一个匹配中获得所有匹配,php,regex,Php,Regex,我正在搜索一个正则表达式,它匹配所有单词,但只提供一个匹配项 我所拥有的: 正则表达式:(.*\={1})\d+(\d*) 输入:max.Money(欧盟)=600000欧元 输出:Euro 这很好,但输入可能是这样的:max.Money(EU)=600000欧元加上一个人20000欧元 在=可以成为任何东西之前,我只知道=是固定的。所以每个输入都有这个 因此,我正在搜索一个正则表达式,它将为我提供这个输入和输出:Euro plus for one person 我尝试使用类似于(\D+)的

我正在搜索一个正则表达式,它匹配所有单词,但只提供一个匹配项

我所拥有的:


正则表达式:
(.*\={1})\d+(\d*)

输入:
max.Money(欧盟)=600000欧元

输出:
Euro


这很好,但输入可能是这样的:
max.Money(EU)=600000欧元加上一个人20000欧元

=
可以成为任何东西之前,我只知道
=
是固定的。所以每个输入都有这个

因此,我正在搜索一个正则表达式,它将为我提供这个输入和输出:
Euro plus for one person


我尝试使用类似于
(\D+)
的正则表达式,但我将获得3个匹配项。有人知道如何在一个匹配中获取所有出现的内容吗?

一个匹配操作无法匹配不连续的文本

最简单的解决方法是捕获
=
+number之后的整个子字符串,然后使用
preg\u replace(“~\s*\d+~”,“,$m[1])
从匹配中删除数字

见:

由于您提到一个
=
后面不必跟1+个数字,您实际上可以
在第一个
=
处分解字符串,然后删除第二个项目中的数字:

$chunks = explode("=", $str, 2);
if (count($chunks) == 2) {
    $res = preg_replace('~\s*\d+~', '', $chunks[1]);
}

请参阅。

尝试。谢谢,但这也会给我20000。请使用
preg\u replace(“~\s*\d+~”,“$m[1])将其从匹配项中删除。
-请参阅。这是最简单的方法,因为你不能用1个匹配操作匹配不连续的文本。这看起来不需要正则表达式,因为它看起来非常静态。可能会在
=
上拆分,并获得第二位的空格分隔值。@WiktorStribiżew谢谢,请将此作为答案发布,以便我可以接受它?我将
$re
更改为
$re='/=\d*\s*(*)/=
之后的第一个位置不必有数字。没提到。啊哈,那你真的可以用
爆炸
了。某物
$chunks = explode("=", $str, 2);
if (count($chunks) == 2) {
    $res = preg_replace('~\s*\d+~', '', $chunks[1]);
}