【发布时间】:2012-11-07 07:01:01
【问题描述】:
我想用正则表达式解析 PHP 代码,以找到我们代码库中声明的所有顶级函数。
简单的:
^\s*function\s*([\w_-]+)\(
效果很好,但有多余的东西
class Foo {
function bar() {...}
}
关于如何跳过没有定义范围的非顶级函数的任何想法?
注意:我知道,我知道,我应该使用真正的解析器,但我想要一些快速而肮脏的东西,可以在 grep -R -P 中运行在非常大的代码库上。
【问题讨论】:
-
我认为
grep无法做到这一点,它只是孤立地查看每一行,并且无法判断前一行是类声明。您可以在 awk、perl 或 php 中编写一些东西来查找类声明,然后通过计算匹配的大括号跳到类的末尾,尽管如果您不是非常小心,它可能会被 cmets 或字符串中不匹配的大括号弄糊涂。为什么不使用带有工具的 IDE 来进行这种分析? -
grep -P做多行 -
好的,但是使用正则表达式检测匹配的大括号内是否有东西真的很困难。
-
Regexen 可能不是这项工作的正确工具,但看看我的尝试。