php正则表达式在引号之间捕获

时间:2010-11-24 21:12:17

标签: php regex

我创建了这个

echo "<p>".preg_replace("/\'[^\)]+\'/","",$line)."</p>";

从此行获取单引号“隐私设置”之间的字词

$_lang['privacy.settings'] = 'Privacy settings';

但我得到了这个输出

$_lang[

我无法理解。正则表达式是如此复杂。

2 个答案:

答案 0 :(得分:1)

你的正则表达式中的+是贪婪的,所以它会尽可能地匹配字符串。您可以通过以下方式解决此问题:

 preg_replace("/\'[^\)\']+\'/","",$line)

 preg_replace("/\'[^\)]+?\'/","",$line)

?在第二个例子中告诉正则表达式+不应该贪婪。

答案 1 :(得分:0)

如果您尝试从该行中获取值,请尝试:

echo "<p>" . preg_replace("/^.*=.*\'(.+)\'.*$/", "$1", $line) . "</p>";