1

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

public MyCons()

或者

public
   MyCons()  

甚至

public

   MyCons
  (

    )    

我对 Java 中的正则表达式非常陌生,所以我不知道如何让它工作。到目前为止,我尝试过的是:

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

不过,它似乎没有检测到涉及多个交替空格和换行符的情况,就像上面的最后一个示例一样。此外,如果我可以用只接受一个单词的正则表达式替换 MyCons,那就太好了(尽管这不是绝对必要的)。

我怎么能解决这个问题?

4

2 回答 2

2

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

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

Group 2捕获所需的构造函数

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

于 2013-01-27T12:39:09.423 回答
0

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

s = s.replaceAll("\\s+", "");
s.equals("publicMyCons()");
于 2013-01-27T13:01:26.880 回答