REGEX捕获函数名称,即使递归使用

时间:2018-09-16 22:32:57

标签: php python regex function

我正在尝试使用Python中的regex捕获PHP代码源的函数名称,这些是以下捕获的行的示例:

perf_mmap__read_init(map, true, &start, &end);
while ((event = perf_mmap__read_event(map, true, &start, end)) != NULL) {
if (perf_mmap__read_init(md, opts->overwrite, &start, &end) < 0)

递归的问题是当我们在参数本身中调用函数时。我的目标是为所有函数名加帽,甚至包括我们在函数参数中调用的函数名,等等。

这是所引用问题的示例:

set_pmd(pmd, pfn_pmd(__phys_to_pfn(phys), sect_prot));

这是我的尝试,我使用了这个简单的正则表达式,但是我不能参加递归用法:

Regex: (\w+)\(.*

1 个答案:

答案 0 :(得分:0)

我终于找到了正则表达式:

([\w]+)(?=\()

该正则表达式可以帮助我捕获所有函数名,即使使用诸如(if,for,while,switch)这样的语句也是如此。因此,我消除了它们在找到匹配项时添加案例测试的麻烦。

if match not in ('if', 'while', 'for', 'switch'):