用于识别构造函数声明的正则表达式

时间:2013-01-27 12:29:15

标签: java regex

我正在研究需要能够识别Java源文件中的无参数构造函数声明的代码段。虽然这些声明需要在语法上正确,但它们仍然可以分布在多行中,例如:

public MyCons()

public
   MyCons()  

甚至

public

   MyCons
  (

    )    

我对Java中的regexp很新,所以我不确定如何使用它。到目前为止我所尝试的是:

public[\\s|\\n]*MyCons[\\s|\\n]*\\(\\S+\\)

它似乎没有检测到涉及多个交替空格和换行符的情况,如上面的最后一个例子。另外,如果我能用一个只接受一个单词的正则表达式替换MyCons会很好(尽管这不是绝对必要的)。

我怎么解决这个问题?

2 个答案:

答案 0 :(得分:2)

您需要使用反向引用,因为类名和构造函数名称始终相同..

class\\s*([a-zA-Z\\d$]+).*?(public\\s+\\1\\s*\\(\\s*\\))

Group 2捕获所需的构造函数

匹配时需要使用DOTALL正则表达式选项

答案 1 :(得分:0)

识别代码的另一种简短方法:

s = s.replaceAll("\\s+", "");
s.equals("publicMyCons()");