我只需编辑一行正则表达式代码

时间:2011-10-05 08:41:35

标签: php regex preg-replace

以下代码有效,但如何编辑它只能检测结束括号后的第一个大括号?

'/\{(([^{}]*|(?R))*)\}/'

示例:

if (1==1) 
{ 
echo "testing {$username}"; 
}

问题是它检测到所有大括号,甚至是$ username变量周围的大括号。所以我认为一个解决方案是在第一个大括号之前检测是否存在a)。我自己尝试了大约20种不同的东西,却无法让它发挥作用。如何进行编辑以仅检测){哦,如果第一个大括号和结束括号之间有空格和制表符,请添加代码。感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用:

\)\s*\{

作为模式的一部分,用于检测像您的示例一样的简单案例。请注意,您不能使用可变长度的正向lookbehind,因此您无法将其更改为(?< =)\ s *){

我的模式仍会选择已注释掉的代码,并且不会检测在(和)之间有注释的代码。您不希望使用正则表达式来尝试检测此类情况。