2011-02-01 79 views
-5

什麼是Java正則表達式匹配以下模式相匹配?需要java的正則表達式下面的字符串

<anyString>.<5 or 10>.anyNumber.anyNumber 

這裏5和10是數字。

+4

這是用正則表達式解決的一個微不足道的問題。如果你試圖解決問題,而不是等待一兩個小時讓其他人爲你解決問題,我認爲你會得到更好的服務。正則表達式並不難(尤其是像這樣的)。如果您可以用任何語言編寫代碼,只需幾個小時的學習和練習即可學習正則表達式。 – 2011-02-01 13:21:24

+0

看看http://txt2re.com/。這給出了一個非常好的起點:http://txt2re.com/index.php3?s=string.5.123.456&3&5&6 – marcog 2011-02-01 13:29:14

回答

6
.*\.(?:5|10)\.\d+\.\d+ 

應該工作。

說明:

.*  # any number of characters (except newlines) 
\.  # literal dot 
(?:5|10) # 5 or 10 
\.  # literal dot 
\d+  # one or more digits 
\.  # literal dot 
\d+  # one or more digits 

記住,如果你在Java中使用它,你需要轉義反斜線構造正則表達式時:

Pattern regex = Pattern.compile(".*\\.(?:5|10)\\.\\d+\\.\\d+"); 
+0

豈不這場比賽如果只有一個「1」或「0」,在5年或10部分? – 2011-02-01 13:21:11

0

假設我正確地讀出你的意圖這應該工作:

Pattern p = Pattern.compile(".*?\\.(?:5|10)\\.(\\d+)\\.(\\d+)"); 
    Matcher m; 

    m = p.matcher(".5.11.10"); 
    m.matches(); // == true 
    m.group(1).equals("11"); 
    m.group(2).equals("10"); 


    m = p.matcher("hannib al.10.11.12"); 
    m.matches(); // == true 
    m.group(1).equals("11"); 
    m.group(2).equals("12"); 
0

假設你指的是例如有效的字符串.5.1.1

這種形式應該做的伎倆

\.(5|10)\.[0-9]\.[0-9]

,或者如果第二兩個數字可以有不止一個字符即.10.123.1234

\.(5|10)\.[0-9]*\.[0-9]*

相關問題