PHP正则表达式查找__中包含的字符串(“STRING_TO_EXTRACT”)

时间:2015-09-21 07:53:49

标签: php regex

抱歉,我真的很喜欢正则表达式。我需要收集我的应用程序中包含在此示例中的所有字符串:__(“STRING”)字符串也可以用单引号括起来。

我尝试使用以下代码:

$str = "__('match1') __("match2") do_not_include __('match3')";

preg_match_all("/__\(['\"](.*)['\"]\)/", $str, $matches);
var_dump($matches);

但它只能匹配整个行字符串与1匹配。以下示例结果。请帮我编辑正则表达式,以便它能够获得3场比赛。

match1') __("match2") do_not_include __('match3

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

您可以使用:

$str = "__('match1') __(\"match2\") do_not_include __('match3')";
preg_match_all('/__\(([\'"])(.*?)\1\)/', $str, $matches);
print_r($matches[2]);

([\'"])将匹配单引号或双引号并将其捕获到组#1中。

.*?将匹配0个或更多字符(非贪婪)

\1是上面捕获的组的反向引用,以确保在RHS上使用相同的引号关闭字符串。

<强>输出:

Array
(
    [0] => match1
    [1] => match2
    [2] => match3
)