获取括号内的文本包括带有更多括号的文本?

时间:2017-09-15 20:53:33

标签: php regex preg-match

我有一个变量:

$str = "i do not need this datavar(i need this (also this) and this) i do not need this";

我有以下表达式,但只返回第一个pharenteses之前的内容,我需要一切直到最后或第二个pharenteses。

$regex2 = '#(datavar\([^)]+\))#';

有没有办法在文本中包含所有内容并完成匹配,直到第二个括号(它可以有更多)。

1 个答案:

答案 0 :(得分:1)

您可以在第二个右括号或最后一个(或任何固定号码)之前获取文本。但我不知道如何使用pcre来检查平衡。这是第二个和最后一个的代码:

$str = "i do not need this datavar(i need this (also this) and this) i do not need this";
$regex2 = '#datavar\(([^)]+\)[^)]+)#'; //second )
$regex2 = '#datavar\((.+)\)#'; //last )
preg_match_all($regex2,$str, $m);
var_dump($m[1]);