正则表达式,以匹配任何合法的Java函数声明的格式

Woo*_*Moo 2 java regex

正则表达式是我的弱点.

我正在寻找一个正则表达式或其他技术,允许我读取任意字符串,并确定它是否是一个有效的java函数.

好:

public void foo()
void foo()
static protected List foo()
static List foo()
Run Code Online (Sandbox Code Playgroud)

坏:

public List myList = new List()
Run Code Online (Sandbox Code Playgroud)

码:

For String line : lines.
{    
     If(line.matches("(public|protected|private)*(/w)*(")
}
Run Code Online (Sandbox Code Playgroud)

是否有这样的正则表达式,如果它是一个有效的java函数将返回true?

Fra*_*Man 5

/^\s*(public|private|protected)?\s+(static)?\s+\w+\s+\w+\s*\(.*?\)\s*$/m
Run Code Online (Sandbox Code Playgroud)

火柴:

  • 行开始<^>
  • 任意空格<\ s*>
  • 可选范围<(public | private | protected)?>
  • 至少有一个空格<\ s +>
  • 可选关键字static <(静态)?>
  • 至少有一个空格<\ s +>
  • 一个java标识符(你应该希望它是一个类名或文字)<\ w +>
  • 至少有一个空格<\ s +>
  • java标识符(函数名称)<\ w +>
  • 打开paren <(>
  • 任意参数(这里没有检查,因为大量的混乱)<.*?>
    • 这是懒惰的匹配
  • 关闭paren <)>
  • 任意空格<\ s*>
  • 行结束

这是完整的FAR,但应该适合您的需求.