解析java源代码以查找注释中的特定单词,然后使用下面的代码

时间:2013-06-18 23:22:13

标签: java parsing

所以这是我的问题。我需要经历一个很长的java代码,并找到具有特定单词或语句的注释。如果它存在,我需要将以下代码的一部分复制到文本文件中。例如。如果这个词是“猫”

     /** 
      *this code is related to the cat 
      */
      public static int a = 5;
      public static String b = "abcd";

我需要输出文本文件在注释后面加上第一个字符串“cat”,所以这里它将是“abcd”。我想我可以将整个代码解析为文本文件并查找注释但是有更快更智能的方法吗?

编辑: 我尝试做一个grep并且它不起作用,因为String的第一次出现是可变距离并且增加行数有时也包括下一个注释。

1 个答案:

答案 0 :(得分:2)

最大的问题是要正确地执行100%正确的问题,你需要为Java的语法编写/使用解析器,以确保你得到你想要的东西。

虽然选项是循环文件内容并在扫描注释和扫描字符串之间切换状态。例如:

Pattern stringPattern = Pattern.compile("String [^=]*= \\"([^\\"]*)\\"");
boolean searchComment = true;
for (String line:fileLines) {
    if(searchComment) {
        searchComment = !line.contains(statement);
    } else {
        Matcher m = stringPattern.matcher(line);
        if (m.matches()) {
            String value = m.group(1);
        }
    }
}

上面的一些代码并不完全正确,但应该给出粗略的想法。