2011-03-01 72 views
0

我需要以下類型的字符串的正則表達式: F_E/S_(字符/數字或者它們的組合)_(字符/數字或者它們的組合)寫入正則表達式

這裏/意味着要麼ë或S 。 它怎麼寫?我想匹配這種形式的一個字符串。如何在java中完成?我是Java的新手。

+1

我建議有一個良好的正則表達式教程谷歌搜索。花一天早上實際學習如何使用它們,而不是要求某人針對特定問題提供具體解決方案。你提出的問題應該很容易找出你自己的問題。 – 2011-03-01 18:19:58

+0

我強烈建議http://www.regular-expressions.info/。它具有優秀的正則表達式教程和任何級別的正則表達式熟悉的參考信息。 – 2011-03-01 18:22:33

回答

5

括號屬於表達式嗎?你能舉個例子嗎?

也許下面正則表達式工作已經:

"F_[ES]_[A-Za-z0-9]+_[A-Za-z0-9]+" 

使用它以這種方式:

Pattern pattern = Pattern.compile("F_[ES]_[A-Za-z0-9]+_[A-Za-z0-9]+"); 
Matcher matcher = pattern.matcher(myStringToMatch); 
if (matcher.matches()) 
{ 
    // Yeah, Baby! 
} 

如果沒有可能性小寫字符,你可以跳過的a-z的出現在正則表達式模式。

+0

例如F_E_H123KF67_FKSLS343KIOP。我嘗試使用你給出的正則表達式字符串,但eclipse正在說無效的轉義序列。你能再檢查一次嗎? – Ajn 2011-03-01 18:20:00

+0

在Java的正則表達式中,反斜槓必須被轉義?我問,因爲他們在.NET中。 – 2011-03-01 18:20:10

+0

反斜線也可以在java中逃脫,是的。對不起,但沒有括號,就不再需要轉義反斜槓了。 – Flinsch 2011-03-01 18:23:37

1

這裏it's正則表達式

F\_[ES]{1}\_([\w\d]+)\_([\w\d]+) 
+0

'\ w'將匹配'_'字符,並且在這種情況下也可能導致奇怪的行爲,因爲貪婪的'+'會首先嚐試使用兩個字母數字組之間的'_'。另外,'[\ w \ d]'是多餘的。 – 2011-03-01 18:25:53

+0

這看起來很嘈雜。我不明白爲什麼下劃線需要逃脫。另外,一些正則表達式引擎很古怪,[ES]本身沒有量詞被認爲是單個字符的錨,{1}不應該被需要,但我不知道所有的實現。雖然它可讀。 +1 – sln 2011-03-01 21:24:29

1

正則表達式將是F_ [ES] _ [A-ZA-Z0-9] + _ [A-ZA-Z0-9] +

查看Java包java.util.regex並嘗試編寫模式匹配方法 - 它非常簡單。張貼另一個問題引用您的Java代碼,如果你到達某個地方卡住..

1

另一種方式來寫它:

F_[ES]_[^\W_]+_[^\W_]+

+0

聰明。可能太聰明瞭,但無論如何+1。 :) – 2011-03-01 20:31:47