正则表达式匹配Java方法块

时间:2019-05-10 09:51:33

标签: java regex

我想匹配Java文件中的方法块。例如说

public class Test {

  public void function1(int a) {
    System.out.println(a);
  }

  public void function2() {
    System.out.println("Hello");
  }

}

在此文件中,我只想匹配function1。所以我应该得到

public void function1(int a) {
    System.out.println(a);
}

要实现这一点,我可以提出这个Java正则表达式

public .*function1\(.*\)\s+\{(\n.*)+?(?=}(\n.*)+(public|private|protected|}))

在这里,我想通过此public .*function1\(.*\)\s+\{来匹配方法签名

接下来,我想使用这段(\n.*)+

来匹配尽可能多的行

最后,我想在遇到公共或私有或受保护的字符串或另一个封闭的括号时停止匹配,例如将函数放在类?(?=}(\n.*)+(public|private|protected|}))的最后

但是当我运行此正则表达式时,它也匹配第二个函数。我要去哪里错了?还是这个正则表达式是完全错误的?请帮忙。

0 个答案:

没有答案