如何使用正则表达式查找函数调用?

时间:2013-04-07 13:16:42

标签: regex

假设我想在我的列表中查找所有函数调用(vb.net列表),并且我有函数名称。 首先,我认为我可以做一个正则表达式,例如:

myfunc\(  .*  \)

即使函数跨越多行也应该有效,假设点被解释为包含换行符(在dot-net中有一个选项)

然后我意识到我的一些论点本身可能是函数调用。 换句话说:
myfunc(a,b,c,d(),e), 这意味着括号不匹配。

所以我认为因为主函数调用通常是一行上的第一项,所以我可以这样做:

^myfunc( .* \) $

这个想法是函数是一行上的第一项(^),最后一个paren是一行($)上的最后一项。但这也不起作用。

我做错了什么?

2 个答案:

答案 0 :(得分:3)

你做不到。按照设计,正则表达式不能处理这里需要的递归。

有关详细信息,您可能需要阅读第一个答案:Can regular expressions be used to match nested patterns?

是的,我知道一些特殊的“正则表达式”允许递归。但是,在大多数情况下,这意味着你正在做一些可怕的事情。使用能够真正理解您语言语法的东西要好得多。

答案 1 :(得分:0)

这不是您问题的直接答案,但如果您想查找函数的所有用途,可以使用Visual Studio。只需右键单击该功能,然后选择Find All References

enter image description here

Visual Studio将显示结果。然后,您可以双击每一行,Visual Studio将带您到那里。

enter image description here