抱歉,我真的很喜欢正则表达式。我需要收集我的应用程序中包含在此示例中的所有字符串:__(“STRING”)字符串也可以用单引号括起来。
我尝试使用以下代码:
$str = "__('match1') __("match2") do_not_include __('match3')";
preg_match_all("/__\(['\"](.*)['\"]\)/", $str, $matches);
var_dump($matches);
但它只能匹配整个行字符串与1匹配。以下示例结果。请帮我编辑正则表达式,以便它能够获得3场比赛。
match1') __("match2") do_not_include __('match3
提前感谢您的帮助。
答案 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
)