我是一名正则表达式新手,所以我想知道以下内容的正则表达式:
function {function arg1,arg2},arg3
我希望能够选择顶级参数:{function arg1,arg2}& ARG3
理想情况下,响应将在PHP中使用preg_match,但几乎任何正则表达式都可以正常工作。
谢谢! 马特
答案 0 :(得分:0)
PCRE / Perl正则表达式,但我只想猜你想要什么(取决于下面的规格):
/(?:function\s+|\G(?<!^),\s*)([^,{}]+|\{function\s+(?1)\s*(?:,\s*(?1)\s*)*})\s*/g
示例 Perl使用:
test('function {function arg1, arg2}, arg3');
test('function foo, {function {function x}, y}, bar');
sub test{
print 'Matched: "', join '", "',
$_[0] =~
/(?:function\s+|\G(?<!^),\s*)
(
[^,{}]+
|
\{function\s+(?1)\s*(?:,\s*(?1)\s*)*}
)
\s*/gx;
print "\"\n";
}
<强>输出强>:
Matched: "{function arg1, arg2}", "arg3"
Matched: "foo", "{function {function x}, y}", "bar"
在 PHP 中应该可以正常工作,只需在需要的地方转义并与preg_match_all一起使用。
关于规范的许多问题:
请更多(真实)示例!