2013-07-05 52 views
0

使用BufferedReader我正在逐行讀取文本文件。在此期間,我想將這條線與特定模式相匹配。如果這種模式比下一個明智的回報滿足。使用正則表達式的字符串匹配器

G,0,8090088800,8090088803, 8090088800|00034575690: 8090088801|00034575693:    8090088802|00034575695: 8090088803|00034575697: 

這是我從文本文件中讀取的行。首先應該是一個字符後,會有一個整數然後是10個整數字符串,再次之後會有10個整數字符串。

8090088800|00034575690: 8090088801|00034575693:    8090088802|00034575695: 8090088803|00034575697: 

這可能是多行在一行。 如果有人可以幫助REGEX這條線將或小費將不勝感激。

+0

擁有先去自己:


當然對於Java,因爲這將被編碼。這可能有所幫助:http://regexpal.com/ –

+0

它看起來像第二個數字是一個11位數字符串。 –

+0

@DanielGimenez他試圖匹配10個單獨的數字字符串 – Anirudha

回答

1

你的口頭描述不符合您的例子。

這符合你的例子:

[A-Z],\d,(\d{10},){2}(\s*\d{10}\|\d{11}:)+ 

注意,在你的榜樣管道後,數量已經位數(不是十)。

if (line.matches("[A-Z],\\d,(\\d{10},){2}(\\s*\\d{10}\\|\\d{11}:)+")) { 
    // it matches 
} 
+0

非常感謝它的完美。 :-) – seeker

+0

沒問題。出於興趣,你是否將「親愛的」從「哈比」翻譯過來? – Bohemian

+0

是的哈比卜你可以:-) – seeker

0

你能做到這一點

while((inp=br.readLine())!=null) 
{ 
    if(inp.matches("[a-zA-Z][^\\d]+\\d([^\\d]*\\d+){10}[^\\d]+")!=true)break; 
    else 
     //do something with inp 
}