簡體   English   中英

正則表達式一場比賽中獲得所有比賽

[英]Regex get all matches in one match

我正在尋找一個匹配所有單詞的正則表達式,但只會給出一個匹配項。

我有的:


正則表達式: (.*\\={1})\\d+(\\D*)

輸入: max. Money (EU)=600000 Euro max. Money (EU)=600000 Euro

輸出: Euro


這可以正常工作,但輸入可能是這樣的: max. Money (EU)=600000 Euro plus 20000 for one person max. Money (EU)=600000 Euro plus 20000 for one person

=可以是任何東西之前,我唯一知道的是=是固定的。 所以每個輸入都有這個。

所以我正在尋找一個正則表達式,它將為我提供以下輸出: Euro plus for one person

我試圖使用像(\\D+)這樣的正則表達式,但是我將為此輸入獲得3個匹配項。 有人知道如何在一場比賽中使所有事件發生嗎?

一個匹配操作不能匹配不連續的文本。

最簡單的解決方法是在= + number之后捕獲整個子字符串,然后使用preg_replace('~\\s*\\d+~', '', $m[1])從匹配項中刪除數字。

參見PHP演示

$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

由於您提到a =不必跟着1+數字,因此您實際上可能只是將第一個=處的字符串explode ,然后刪除第二項中的數字:

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

請參閱此PHP演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM