获取Java源文件的包

Oak*_*Oak 2 java regex parsing

我的目标是找到一个Java源文件的包(作为字符串),以纯文本形式给出,但尚未在文件夹中排序.

我不能只package在文件中找到关键字的第一个实例,因为它可能出现在注释中.所以我在考虑两种选择:

  • 逐字扫描文件,为扫描仪维护"内部注释"标记.第一次package遇到关键字而不在评论中时,停止扫描并报告结果.
  • 使用正则表达式 - 理论上应该是可行的,因为块注释在Java中没有下一个,但我尝试制作这样的正则表达式,结果证明它非常复杂 - 对我来说,至少.

这两种方法的另一个区别是,当我手动扫描时,我可以停止扫描,因为我可以确定package关键字不再出现,节省了一些时间......而且我不确定我是否可以使用正则表达式做类似的事情.另一方面,"当它不再出现时"的决定并不一定简单,尽管我可以使用一些启发式方法.

我想听听有关此问题的任何意见,欢迎任何有关正则表达式的帮助.我的解决方案也是用Java编写的.

编辑:对那些建议实际解析文件的人来说 - 这绝对是一个可行的选择,谢谢你,但是我觉得解析整个文件只是一个包太过分了.如果没有更简单的选择,我会这样做.

tan*_*ens 6

我通过使用java解析器解决了这个问题.为了我的目的,javaparser是最合适的.

CompilationUnit cu = JavaParser.parse( file );
String packageName = cu.getPackage().getName().toString();
Run Code Online (Sandbox Code Playgroud)