import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class Solution {
public static void main(String[] args) throws IOException{
BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
String line="";
Pattern pattern= Pattern.compile("(?s)\\s*(/\\*.*\\*/)",Pattern.DOTALL);
while((line=br.readLine())!=null){
Matcher matcher= pattern.matcher(line);
while(matcher.find()){
System.out.println(matcher.group());
}
}
}
}
我正在尝试检测多行评论。我哪里错了?
答案 0 :(得分:2)
我正在尝试检测多行评论。我哪里错了
你的正则表达式看起来很好,但它有多余的(?s)
,它不适用于嵌套的注释。 .*
也是贪婪的,所以它会找到最后*/
而不是最短的。{/ p>
然而主要问题是使用:
br.readLine()
这是逐行读取输入,因此当您matcher
方法的输入只是一行时,您的模式匹配无法检测多行注释。