Lets say I have the following string:
"**link(http://google.com)*{Google}**"
And I want to use preg_match to find the EXACT text **link(http://google.com)
but the text inside the brackets changes all the time. I used to use:
preg_match('#\((.*?)\)#', $text3, $match2);
Which would get what is inside the brackets which is good but if I had: *hwh(http://google.com)**
it would get whats inside of that. So how can i get whats inside the brackets if, in front of the brackets has **link
?
~(?:\*\*link\(([^\)]+)\))~
will match contents in the brackets for all inputs that look like **link(URL)
but do not contain extra )
inside URLs. See the example on Regexr: http://regexr.com/3en33 . The whole example:
$text = '"**link(http://google.com)*{Google}**"
**link(arduino.cc)*{official Arduino site}';
$regex = '~(?:\*\*link\((?<url>[^)]+))~';
preg_match_all($regex, $text, $matches);
var_dump($regex, $matches['url']);
Here
preg_match("/\*\*link\((\D+)\)/",$text,$match);
Use a lookbehind operator ?<=
(?<=\*\*link)\((.*)\)
gives you what's inside braces if the text behind is **link
Update:
Here's a PHP example
Here's a regex example