Regex 使用正则表达式在函数中搜索内容
如何使用正则表达式搜索包含使用全局变量的函数,而不首先运行“global$var” 这些文件如下所示:Regex 使用正则表达式在函数中搜索内容,regex,recursion,Regex,Recursion,如何使用正则表达式搜索包含使用全局变量的函数,而不首先运行“global$var” 这些文件如下所示: class TestClass { function correctFunc() { global $var; $name = $var->name; } function invalidFuncIWantToFind() { $age = $var->user->age; }
class TestClass
{
function correctFunc()
{
global $var;
$name = $var->name;
}
function invalidFuncIWantToFind()
{
$age = $var->user->age;
}
}
我想找到所有InvalidBunchWantFind函数的函数名。在工作中,这确实会加快我们的工作,但我不知道如何做到这一点。根据您的正则表达式实现,您可能可以使用lookback模式来实现这一点。声称例如.NET Framework实现可以做到这一点。(问题是,lookback可以包含可变数量的字母……这似乎会引起麻烦)。
因为我手头没有Visual Studio,所以我无法为您构建正则表达式,不过,很抱歉。在处理PHP等非正则语言时不要使用正则表达式。如果您想要快速、脏且容易出错的解决方案,正则表达式可能可以工作。如果您想要一个稳定的解决方案,您应该研究上下文无关语法的解析器生成器(例如antlr.org)。你想要什么样的解决方案?我想要一个快速而肮脏的解决方案。:)我继续使用这个函数,“function\s+(\w+).*?(\{.*?(\{.*?\})*.*?})”似乎可以获得所有函数。现在我只需要得到那些包含“$var->”的函数,而不需要先得到“global$var”;但我不知道该怎么做。
$some_var=“{”;
破坏了提取正则表达式的函数。你不应该使用正则表达式。看看-PHP也是如此。是的,我一直在尝试使用lookbehind来实现它,但还没有什么工作。