Java中的Java多行注释 - 有什么问题?

时间:2016-02-05 07:00:51

标签: java regex

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());
            }

        }
    }
}

我正在尝试检测多行评论。我哪里错了?

1 个答案:

答案 0 :(得分:2)

  

我正在尝试检测多行评论。我哪里错了

你的正则表达式看起来很好,但它有多余的(?s),它不适用于嵌套的注释。 .*也是贪婪的,所以它会找到最后*/而不是最短的。{/ p>

然而主要问题是使用:

br.readLine()

这是逐行读取输入,因此当您matcher方法的输入只是一行时,您的模式匹配无法检测多行注释。