我想知道什么是正则表达式会检测到任何函数声明,它在Java中有一个包含对自身调用的主体。
匹配的方法示例:
public int method()
{*n
method();
}*n
感谢您的帮助。
答案 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());