Php 查找正则表达式
有一行包含以下内容:Php 查找正则表达式,php,regex,Php,Regex,有一行包含以下内容: function dekorator($func, $agrs = []) { if (dd){ var_dump("dekorators"); $func(); } } if (true) { @dekorator function test() { if (ss){ var_dump("tests"); while(){
function dekorator($func, $agrs = [])
{
if (dd){
var_dump("dekorators");
$func();
}
}
if (true)
{
@dekorator
function test()
{
if (ss){
var_dump("tests");
while(){
dd
}
}
}
function dgdg()
{
var_dump("ff");
}
test();
}
我需要得到以下信息:
/function?\s+(\w+)*\(([^\)]*)\).*?\{([^\}]+[^\{]+)\}/sim
function\s+(\w*)\s*\((.*?)\)\s*(\{((?>[^{}]+|(?3))*)\})
但是有一个,它捕获的最后一个函数不是引号(与函数本身无关)
功能本身:
function dgdg()
{
var_dump("ff");
}
多余的:
test();
}
演示:使用以下表达式:
/function?\s+(\w+)*\(([^\)]*)\).*?\{([^\}]+[^\{]+)\}/sim
function\s+(\w*)\s*\((.*?)\)\s*(\{((?>[^{}]+|(?3))*)\})
演示:如果你在课堂上有这个,那么你可以使用@Justinas,重点是这是一个Strings。我认为在正则表达式中不可能做到这一点。事实上,有太多的边缘情况,并且regexp不是为这类作品设计的,而且仍然不完美。但是你可以用状态机来正确解析你的字符串。非常感谢,昨天我想到了这种正则表达式
function\s([^\]+)\(.*)\)\s*({(.*$.[^{}]\(?3))*}