以下代码有效,但如何编辑它只能检测结束括号后的第一个大括号?
'/\{(([^{}]*|(?R))*)\}/'
示例:
if (1==1)
{
echo "testing {$username}";
}
问题是它检测到所有大括号,甚至是$ username变量周围的大括号。所以我认为一个解决方案是在第一个大括号之前检测是否存在a)。我自己尝试了大约20种不同的东西,却无法让它发挥作用。如何进行编辑以仅检测){哦,如果第一个大括号和结束括号之间有空格和制表符,请添加代码。感谢。
答案 0 :(得分:0)
您可以使用:
\)\s*\{
作为模式的一部分,用于检测像您的示例一样的简单案例。请注意,您不能使用可变长度的正向lookbehind,因此您无法将其更改为(?< =)\ s *){
我的模式仍会选择已注释掉的代码,并且不会检测在(和)之间有注释的代码。您不希望使用正则表达式来尝试检测此类情况。