Java:使用正则表达式从块注释中删除斜杠和星号

时间:2013-04-17 07:18:03

标签: java regex comments

我正在开发一个个人项目,我需要从这样的输入字符串中提取实际的注释。

案例1:/* Some useful text */

输出:Some useful text

案例2:/*** This is formatted obnoxiously**/

输出:This is formatted obnoxiously

案例3:

    /**

    More useful
information

    */

输出:More useful information

案例4:

/**
Prompt the user to type in 
the number. Assign the number to v
*/

输出:Prompt the user to type in the number. Assign the number to v

我正在使用Java工作,我尝试使用/*之类的天真方法替换*/String.replace,但由于评论可以采用与上述不同的方式进行格式化,{ {1}}方法似乎不是一个可行的方法来做到这一点。如何使用正则表达式实现上述输出?

Here是我正在使用的测试评论文件。

2 个答案:

答案 0 :(得分:2)

尝试类似:

"/\\*+\\s*(.*?)\\*+/"

dot也应与新行匹配:

Pattern p = Pattern.compile("/\\*+\\s*(.*?)\\*+/", Pattern.DOTALL);

修改

 Pattern p = Pattern.compile("/\\*+\\s*(.*?)\\*+/", Pattern.DOTALL); 
 Matcher m = p.matcher("/*** This is formatted obnoxiously**/");
 m.find();
 String sanitizedComment = m.group(1); 
 System.out.println(sanitizedComment);

答案 1 :(得分:1)

您可以使用以下正则表达式:

String newString = oldString.replaceAll("/\\*+\\s*|\\s*\\*+/", "");

编辑

为了摆脱换行,你可以做类似的事情:

String regex = "/\\*+\\s*|\\s*\\*+/|[\r\n]+";
String newString = oldString.replaceAll(regex, "");