2016-02-05 56 views
-2
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()); 
      } 

     } 
    } 
} 

我在嘗試檢測多行註釋。我錯在哪裏?Java中的多行註釋 - 出錯了?

+0

什麼是錯誤(消息/調用堆棧)?什麼是錯誤的結果?它是用於特定的輸入行嗎? – YoYo

+1

*我錯在哪裏?*使用正則表達式解析:-) –

+0

我應該使用什麼? – Krishna

回答

2

我在嘗試檢測多行註釋。我錯在哪裏

你的正則表達式看起來不錯,但它有多餘的(?s),它不會與嵌套註釋一起使用。此外.*是貪婪的,所以它會發現最後*/而不是最短的一個。

然而主要問題是使用:

br.readLine() 

這是逐行讀取輸入行,因此你的模式匹配是無法檢測到多行註釋時,輸入您matcher方法只是一條線。

+1

Java中禁止嵌套註釋嗎? –

+0

嵌套我的意思是'/ *一些評論/ *文本*/int x = 1;/*更多評論* /' – anubhava

+1

你是一個非常聰明的人:) –