从字符串中找出函数中的所有参数

时间:2015-06-24 18:07:19

标签: php regex

我想查找函数中的所有参数,但是当我使用"("或")"时,我会收到错误。我的函数参数中的char。

我的RegEx:/@GetText(\(\s*([^)]+?)\s*\))/ 我使用http://www.phpliveregex.com进行调试(funktion:preg_match_all)。

我的搜索字符串:

  • @GetText("Hello World", "Example")< = Works
  • @GetText("Hello World!", 1234)< = Works
  • @GetText("This makes errors--> Hello(World)")< =它不起作用 作品

2 个答案:

答案 0 :(得分:1)

如果要匹配递归子字符串,则需要在前瞻中使用recursive正则表达式来检索所有重叠匹配,这样的事情应该有效:

$re = '~@GetText(?=(\((?:[^()]+|(?1))*+\)))~';
preg_match_all($re, $str, $matches);
print_r($matches[1]);

eval.in

答案 1 :(得分:0)

您是否尝试在整个字符串上只获得一个匹配项?

我试过这个,但不确定这是否是您正在寻找的:

Regex101 Example

/@GetText\((.*)\)$/g