我正在开发一个个人项目,我需要从这样的输入字符串中提取实际的注释。
案例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是我正在使用的测试评论文件。
答案 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, "");