【发布时间】:2011-01-26 17:21:48
【问题描述】:
我是一个正则表达式新手,所以我想知道下面的正则表达式是什么:
函数{函数 arg1, arg2}, arg3
我希望能够只选择顶级参数:{function arg1, arg2} & arg3
理想情况下,响应将在 PHP 中使用 preg_match,但几乎任何正则表达式都可以正常工作。
谢谢! 马特
【问题讨论】:
-
这是您需要的最通用的函数形式吗?内部函数中是否总是有两个参数?
-
如果你在参数中允许任意深度的函数 (
function … {function … {function …} … } … }),你的语言不是正则的,你不能使用正则表达式来解析它。 -
使用 pcre 的递归模式语法,可以test 语句。但是afaik(最大)捕获数是在编译时确定的,即您可以获取第一个顶级参数+完整的尾部或(不太有用)第一个和最后一个顶级参数(因为后面的抓取会覆盖之前抓取的相同捕获)。
-
@Gumbo:PCRE 等(在这种情况下当然是“正则表达式”)允许您匹配非常规语言(并且已经这样做了很长时间)。我猜你知道这一点,所以我不知道为什么所有关于“正则表达式不能匹配非正则语言”的大惊小怪。
-
@Qtax:说实话,我不知道 PCRE 确实支持递归模式。感谢您提供这些信息。