2012-06-27 68 views
-1

的字符串將是格式[(1.0N)-195(1.0E)-195(28)-769.7(NESW)-1080.8(U)-617.9(43-047-30127)]需要一個字符串以下的正則表達式格式匹配

我需要一個正則表達式匹配,看是否字符串包含-XXX-XXX(其中X是一個數字)

Pattern p = Pattern.compile("(?=.*?(?:-[0-9][0-9][0-9]-[0-9][0-9][0-9]))"); 

    if(p.matcher(a).matches()) 

    { 
     System.out.println("Matched"); 
    } 

我也試過-[0-9][0-9][0-9]-[0-9][0-9][0-9](?=.*?-[0-9][0-9][0-9]-[0-9][0-9][0-9]) 沒有任何工作

+0

你不是說比賽43-037-30149但捕獲-037-30149 ? –

+0

對不起,我不清楚...我只想檢查字符串是否包含 - [0-9] [0-9] [0-9] - [0-9] [0-9] [0-9] – jaysun

+0

所以你不是專門尋找你的問題中提到的字符串「-037-301」? [困惑]。 –

回答

2

子串會容易得多,但(?:\\d{2})(-\\d{3}-\\d{5})將匹配-XXX-XXXXX作爲1組。

我假設最後一個數字中的3位數字是一個錯誤。如果不只是改變了5到3

+0

非常感謝查爾斯 – jaysun

0

爲什麼你不使用子字符串?

String b = a.substring(2,9); 

或者這一個:

String c = a.substring(a.indexOf('-'), a.indexOf('-') + 8); 

製作 「唯一」 一個子也將是更有效! ;)

1

如果你想檢查是否字符串包含-3digits-3位數

String a = "43-037-30149"; 
Pattern p = Pattern.compile(".*(-[0-9]{3}-[0-9]{3})"); 
    if(p.matcher(a).matches())  
    { 
    System.out.println("Matched"); 
    }