我正在搜索匹配所有单词的正则表达式,但只会给出一个匹配。
我有什么:
正则表达式:max. Money (EU)=600000 Euro
输入:Euro
输出:max. Money (EU)=600000 Euro plus 20000 for one person
这很好用,但输入可能是这样的:=
。
在=
成为任何事物之前,我唯一知道的是Euro plus for one person
是固定的。所以每个输入都有这个。
所以我正在搜索一个正则表达式,它会为我输入此输出:(\D+)
。
我尝试使用像-5
这样的正则表达式,但是我输入3个匹配项。有人知道如何在一场比赛中获得所有出场次数吗?
答案 0 :(得分:3)
无法将不连续文本与1个匹配操作匹配。
最简单的解决方法是在=
+号码后捕获整个子字符串,然后从preg_replace('~\s*\d+~', '', $m[1])
匹配项中删除数字。
请参阅PHP demo:
$re = '/=\d+\s*(.*)/';
$str = 'max. Money (EU)=600000 Euro plus 20000 for one person';
$res = '';
if (preg_match($re, $str, $m)) {
$res = preg_replace('~\s*\d+~', '', $m[1]);
}
echo $res; // => Euro plus for one person
由于您提到=
不必跟随1+位数,您可能只是explode
第一个=
处的字符串,然后删除第二个数字项:
$chunks = explode("=", $str, 2);
if (count($chunks) == 2) {
$res = preg_replace('~\s*\d+~', '', $chunks[1]);
}
请参阅this PHP demo。