2011-03-11 63 views
1

我需要一個正則表達式,其輸入字母數字後跟正斜槓,然後再輸入字母數字。任何人都可以幫助我如何在Java中編寫正則表達式嗎?在java中的正則表達式

示例這是如下:

adc9/fer4 

我試圖通過使用正則表達式如下:
的String = abc9/ferg5;
String pattern =「^ [a-zA-Z0-9 _] +/[a-zA-z0-9 _] * $」;
if(s.matches(pattern)) { return true; }


但問題是它正在接受形式abc9的所有字符串/沒有檢查正斜槓後。
任何人都可以幫助我解決這個問題嗎?

+3

'.'不是字母數字。需要或不需要?或者在你的例子中這是一個疏忽? – BalusC 2011-03-11 21:05:03

+0

字母數字應該多短/多長?它必須是阿爾法然後數字或任何排列? – Spidy 2011-03-11 21:05:08

+1

這非常簡單。該文檔可以幫助您編寫此正則表達式。請參閱http://download.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html – 2011-03-11 21:07:13

回答

0

我會使用:

String raw = "adc9/fer4"; 
String part1 = raw.replaceAll("([a-zA-Z0-9]+)/[a-zA-Z0-9]+","$1"); 
String part2 = raw.replaceAll("[a-zA-Z0-9]+/([a-zA-Z0-9]+)","$1"); 

[A-ZA-Z0-9]允許任何字母數字串 +是一種或多種 ([A-ZA-Z0-9] +)指存儲該組 $ 1是價值記得第一組

+0

您不能使用Java正則表達式輕鬆編寫「字母數字」,但「[\ pL \ pN \ pM]」可能是許多用途的可接受替代品。 – tchrist 2011-03-11 21:12:11

+0

爲什麼[a-zA-Z0-9]不起作用?這是字母數字字符。 – RedSoxFan 2011-03-11 21:13:22

+0

我不知道那個$ 1,那真是太棒了 – Spidy 2011-03-11 21:14:29

1

參考:http://download.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html

Pattern p = Pattern.compile("[a-z\\d]+/[a-z\\d]+", CASE_INSENSITIVE); 

希望這有助於。

+1

的編輯'[a-z]'不是所有的字母代碼點。當然,這只是一個a-z。 – tchrist 2011-03-11 21:12:57

+0

@tchrist - 我測試了那個模式字符串,它確實是字母數字 – Spidy 2011-03-11 21:25:07

+0

錯誤:[a-z]匹配所有ASCII字母字符。這與所有字母字符不一樣。 – 2011-03-11 21:35:05

0

這是效仿\w意味着需要Java代碼:

public final static String 
    identifier_chars = "\\pL"   /* all Letters  */ 
        + "\\pM"   /* all Marks  */ 
        + "\\p{Nd}"  /* Decimal Number */ 
        + "\\p{Nl}"  /* Letter Number */ 
        + "\\p{Pc}"  /* Connector Punctuation   */ 
        + "["    /* or else chars which are both */ 
        +  "\\p{InEnclosedAlphanumerics}" 
        + "&&"   /* and also  */ 
        +  "\\p{So}" /* Other Symbol  */ 
        + "]"; 

public final static String 
identifier_charclass  = "[" + identifier_chars + "]";  /* \w */ 

public final static String 
not_identifier_charclass = "[^" + identifier_chars + "]";  /* \W */ 

現在使用identifier_charclass的模式,無論你想一個\w性格,not_identifier_charclass無論你想一個\W字符。它不符合標準,但它比Java對這些標準的破壞定義要好得多。

0

星號應該是加號。在正則表達式中,星號表示0或更多;加上意味着1或更多。你在斜線前的部分後面加了一個加號。斜線後的部分也應該使用加號。

+0

你能寫出準確的表達嗎? – 2011-03-11 22:18:25

+0

好的:「^ [a-zA-Z0-9 _] +/[a-zA-z0-9 _] + $」。就像你有,但星號改爲加號。 – Jay 2011-03-14 15:15:27

0

我認爲最短的Java正則表達式將做我認爲你想要的是"^\\w+/\\w+$"