2017-10-28 52 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

非常感谢 - 它像一个魅力。谢谢你解释“贪婪”现在是有道理的。 –