0

我正在做一个个人项目,我需要从这样的输入字符串中提取实际评论。

情况1:/* Some useful text */

输出:Some useful text

案例二:/*** 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但由于注释可以像上面那样以不同的方式格式化,因此该replace方法似乎不是一种可行的方法。如何使用正则表达式实现上述输出?

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

4

2 回答 2

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);
于 2013-04-17T07:25:12.207 回答
1

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

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

编辑

要摆脱换行符,您可以执行以下操作:

String regex = "/\\*+\\s*|\\s*\\*+/|[\r\n]+";
String newString = oldString.replaceAll(regex, "");
于 2013-04-17T07:22:27.223 回答