2013-04-04 59 views
1

我的字符串:Java的匹配器錯誤

null[00:14.04]I've /n[00:14.11]got /n[00:14.18]a /n[00:14.25]fee- /n[00:15.02]ling /n 

我試圖獲得之間的每一個數據[< --->]括號中。這是我的代碼。

String find = "[(.*?)\\\\]"; 
Pattern patern = Pattern.compile(find); 
Matcher matcher = patern.matcher(intake); 
    while(matcher.find()){ 
     i++; 
     matcher.find(i); 
     int start = matcher.start(); 
     int end = matcher.end(); 
     String group = matcher.group(); 
    } 

初步結果:

start = 10 
end = 11 
group = "." 

我想要的是(在我的頭上計數)

start = 4 
end = 14 
group = [00:14.04] 

接下來是

start = 22 
end = 32 
group = [00:14.11] 

什麼是正確的模式?

+1

所以你希望它匹配並返回'[]'括號內的所有內容,那麼所有的時間戳?你在「想要」中說什麼不清楚。 – Walls 2013-04-04 14:31:25

回答

1

您正在使用錯誤的轉義。使用此正則表達式:

String find = "\\[(.*?)\\]"; 

編輯:基於您的評論:

如果你想捕捉方括號內的所有項目只運行while循環是這樣的:

while(matcher.find()) { 
    String matched = matcher.group(1); 
    System.out.printf("Matched Group: [%s]%n", matched); 
} 
+0

我希望匹配括號內的所有項目。抱歉讓我更新我的問題。 – Akyl 2013-04-04 14:34:53

+0

@Akyl:這將匹配正確的方括號內的字符串,它會產生**精確的**開始,結束,組的值,你所期望的。 – anubhava 2013-04-04 14:36:20

+0

對不起,你是對的我在我的循環中犯了一個錯誤,重複它的過程我的不好。謝謝btw。 – Akyl 2013-04-04 14:47:55