用于检测递归Java函数的正则表达式

时间:2013-11-26 23:32:48

标签: java regex parsing

我想知道什么是正则表达式会检测到任何函数声明,它在Java中有一个包含对自身调用的主体。

匹配的方法示例:

public int method()

{*n

method();

}*n

感谢您的帮助。

3 个答案:

答案 0 :(得分:3)

考虑以下代码示例:

public int method() {

System.out.prontln("method() started");
}

public int method() {

// this method() is just an example

}

你现在看到你需要一个完整的解析器吗?

答案 1 :(得分:1)

我不知道如何使用正则表达式可靠地完成这一操作,因为任何方法调用的参数可能是任意复杂的,甚至包括包含类似命名方法的任何类。

所以,答案是“不”;如果你想让它变得可靠,至少不会。

答案 2 :(得分:0)

这是一个快速而肮脏的例子。这会导致许多误报并且通常很慢。它没有考虑大括号和可能包含curlies的字符串。但是,它适用于您的输入。 : - )

Matcher m = Pattern.compile("([\\w\\d_$]+\\s*\\([^)]*\\))[^{]*\\{.*\\1[^}]+}", Pattern.DOTALL |Pattern.MULTILINE).matcher(s1);

System.out.println(m.matches());