对于java专家来说,这可能是件小事。请帮帮我:
我的程序中有一段评论如下:
/*********
block of comments - line 1
line 2
.....
***/
如何使用正则表达式检索“评论块”?
感谢。
答案 0 :(得分:2)
这样的事情应该做:
String str =
"some text\n"+
"/*********\n" +
"block of comments - line 1\n" +
"line 2\n"+
"....\n" +
"***/\n" +
"some more text";
Pattern p = Pattern.compile("/\\*+(.*?)\\*+/", Pattern.DOTALL);
Matcher m = p.matcher(str);
if (m.find())
System.out.println(m.group(1));
(DOTALL
表示模式中的.
也应与新行字符匹配)
打印:
block of comments - line 1
line 2
....
答案 1 :(得分:2)
Pattern regex = Pattern.compile("/\\*[^\\r\\n]*[\\r\\n]+(.*?)[\\r\\n]+[^\\r\\n]*\\*+/", Pattern.DOTALL);
这是有效的,因为注释不能嵌套在Java中。
使用不情愿的量词(.*?
)非常重要,否则我们将匹配文件中第一条评论与最后一条评论的所有内容,无论中间是否存在实际代码。
/\*
匹配/*
[^\r\n]*
匹配此行其余部分的任何内容。
[\r\n]+
匹配一个或多个换行符。
.*?
匹配尽可能少的字符。
[\r\n]+
匹配一个或多个换行符。
[^\r\n]*
匹配结束*/
行的所有字符。
\*/
匹配*/
。
答案 2 :(得分:0)
不确定多线问题,但一切都在一条线上,你可以这样做:
^\/\*.*\*\/$
分解为:
^ start of a line
\/\*+ start of a comment, one or more *'s (both characters escaped)
.* any number of characters
\*+\/ end of a comment, one or more *'s (both characters escaped)
$ end of a line
顺便说一下,它是“正则表达式”而不是“regrex”:)