将与 Java 方法声明匹配的正则表达式

2022-09-02 19:30:55

我需要一个与java方法声明匹配的正则表达式。我想出了一个与方法声明匹配的方法,但它要求方法的左括号与声明位于同一行。如果您有任何建议来改进我的正则表达式或只是有一个更好的正则表达式,那么请提交答案。

这是我的正则表达式:"\w+ +\w+ *\(.*\) *\{"

对于那些不知道java方法是什么样子的人,我将提供一个基本的方法:

int foo()
{

}

Java方法中有几个可选部分也可以添加,但这些是方法保证具有的唯一部分。

更新:我目前的正则表达式是为了防止Mike和adkom描述的情况。"\w+ +\w+ *\([^\)]*\) *\{"


答案 1
(public|protected|private|static|\s) +[\w\<\>\[\]]+\s+(\w+) *\([^\)]*\) *(\{?|[^;])

我认为上面的正则表达式可以匹配几乎所有可能的Java方法声明组合,即使那些包括泛型和数组在内的组合也是返回参数,而原作者提供正则表达式不匹配。


答案 2

我还需要这样一个正则表达式,并想出了这个解决方案:

(?:(?:public|private|protected|static|final|native|synchronized|abstract|transient)+\s+)+[$_\w<>\[\]\s]*\s+[\$_\w]+\([^\)]*\)?\s*\{?[^\}]*\}?

这个语法和Georgios Gousios的答案对于构建正则表达式很有用。

编辑:考虑了tharindu_DG的反馈,使组无法捕获,改进了格式。