强大的正则表达式,用于确定Java中的类声明

问题描述:

我试图确定在.java文件中声明了多少个类,只使用该文件类型(无法编译和只计数.class文件)。强大的正则表达式,用于确定Java中的类声明

我发现了一些可以接受的方式来做到这一点,但我不喜欢随便做任何事情。我想了解如何做到这一点更有力,即考虑到边缘可能是这样的:

this is actually a block comment with class in it*/ 
//in line comment that contains class keyword 
"string with class in it" 

正则表达式的东西对我来说很新的,我只是通过一些教程去,但似乎无法找到或者恰当地阐述一个表达式来匹配这样的例子。

将不胜感激任何种类的见解和帮助。
谢谢!

+4

不幸的是我认为你会找到缺乏这个目的的正则表达式。做到这一点的正确方法是编写自己的Java代码解析器或从现有的Java代码解析器中捎回。 – 2012-03-10 03:14:15

+1

寻找匿名类将会有点棘手我认为 – 2012-03-10 03:17:02

+0

正则表达式无法处理嵌套括号;我不相信他们能够处理这种复杂的事情。 – 2012-03-10 03:17:26

描述语言的形式语法将是一个非常确切的方法来做到这一点。更好的是......你可能会发现一个已经为Java语言编写的语法,你可以使用它。

http://www.antlr.org/grammar/1152141644268/Java.g

我想你可以写正则表达式来做到这一点,尽管它可能需要相当长的时间。如果你想快速学习正则表达式,我推荐RegexBuddy工具。只需将您的代码复制到工具的编辑器中,尝试正则表达式并几乎同时查看结果。该工具的网站还提供了大量有用的资源和正则表达式语言的代码片段。