2017-10-28 95 views
-1

我使用正則表達式如下正則表達式:表達式選擇超過預期

'/\@(.*)\((.*)\)/' 

,我試圖讓@ONE(二)一個,另外兩個來自表達。只要它是唯一可以在行尾之前找到的東西(我認爲)

我很喜歡正則表達式,我真的不明白我做錯了什麼。

我需要的是能夠獲得所有的一對/兩對夫婦。你能幫我麼。

我與PHP的工作和下面的函數

$parsed_string = preg_replace_callback(
    // Placeholder for not previously created article 
    // Pattern example: @George Ioannidis(person)    
    '/\@(.*)\((.*)\)/', 
    function ($matches) { 
     return $this->parsePlaceholders($matches); 
    }, 
    $string 
); 

結果我收到來自https://regexr.com The results I am getting from https://regexr.com/

+0

你能否將原始鏈接添加到你的正則表達式網站? –

回答

1

*表達是默認的貪婪。例如這樣的正則表達式(.*)a會返回bdeabde結果bdeabdea字符串。您應該使用特殊的?符號表示非貪婪的*行爲。在你的情況嘗試使用/\@(.*?)\((.*?)\)/正則表達式。

+1

非常感謝 - 它像一個魅力。謝謝你解釋「貪婪」現在是有道理的。 –