0

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

myfunc\(  .*  \)

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

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

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

^myfunc( .* \) $

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

我究竟做错了什么?

4

2 回答 2

3

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

有关更多信息,您可能想在此处阅读第一个答案:可以使用正则表达式匹配嵌套模式吗?

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

于 2013-04-07T13:21:59.067 回答
0

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

在此处输入图像描述

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

在此处输入图像描述

于 2013-04-07T13:29:07.627 回答