2013-03-04 30 views
0

在我的Java應用程序中,我嘗試讀取一個文本文件並將其添加到hashmap的一些字符串組中。我使用匹配模式來查找字符串,但我沒有得到正確的字符串。我的文本文件內容爲如何在Java中聲明匹配模式?

 
S Fr:          tod : 80089789 
kid#00332001897678 cno : 890768 
cuon   #PKGS    WEIGHT 
51235

Pattern pattern = Pattern.compile("(tod:[0-9]{0,}|kid#[0-9]{0,})|Cno:[0-9]{0,}|CUON [0-9]{0,}"); 
while ((strLine = br.readLine()) != null) { 
    strLine= strLine.trim(); 
    Matcher m1 = pattern.matcher(strLine); 
    while (m1.find()) 
    allv.add(m1.group()); 
+0

在代碼不在文件的,因爲在所有的空格和字母大小寫的區別匹配的表達。這些例子是真的嗎? – Joni 2013-03-04 08:15:55

回答

1

用正則表達式的問題是,正則表達式需要你明確表示,如果有將是空白。例如

tod : 80089789

不是由正則表達式

tod:[0-9]{0,}

匹配,但它是由正則表達式

tod : [0-9]{0,}

或更一般的匹配

tod\s*:\s*[0-9]{0,}

\s意爲「空白字符」和*的意思是「做事情之前的0次或多次」。事實上,爲了清晰起見,您可以用*替換所有{0,}

+0

它的工作很好.. – Palaniraja 2013-03-04 09:34:39

1

當我在你的文件上執行你的代碼時,我收到1個匹配。所以,如果這不是你想要的...請澄清你的問題。

見IMG:http://i.imgur.com/EnTXi4u.png

+0

我想添加arryList..tod,kid,con,cuon中的所有匹配 – Palaniraja 2013-03-04 09:36:01