正则表达式在一场比赛中获得所有比赛

时间:2017-02-07 08:14:14

标签: php regex

我正在搜索匹配所有单词的正则表达式,但只会给出一个匹配。

我有什么:

正则表达式:max. Money (EU)=600000 Euro

输入:Euro

输出:max. Money (EU)=600000 Euro plus 20000 for one person

这很好用,但输入可能是这样的:=

=成为任何事物之前,我唯一知道的是Euro plus for one person是固定的。所以每个输入都有这个。

所以我正在搜索一个正则表达式,它会为我输入此输出:(\D+)

我尝试使用像-5这样的正则表达式,但是我输入3个匹配项。有人知道如何在一场比赛中获得所有出场次数吗?

1 个答案:

答案 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