2011-03-01 24 views
31

我一直在抨擊我的頭對牆試圖做什麼應該是一個簡單的正則表達式 - 我需要匹配,例如12po其中12部分可以是一位或兩位數字,然後是可選的非字母數字,如:.-,_等,然後字符串po正則表達式爲1或2位數字,可選非字母數字,2個已知的阿爾法

最終的使用將在C#,但我希望它在命令行上也能正常使用grep。我沒有訪問C#,這沒有幫助。

回答

3
^[0-9][0-9]?[^A-Za-z0-9]?po$ 

你可以在這裏進行測試:http://www.regextester.com/

在C#中使用,

Regex r = new Regex(@"^[0-9][0-9]?[^A-Za-z0-9]?po$"); 
if (r.Match(someText).Success) { 
    //Do Something 
} 

記住,@是一個有用的標誌,這意味着解析器取字符串字面(例如,你不需要寫一個\\反斜槓)

45
^[0-9]{1,2}[:.,-]?po$ 

添加任何其他允許的非alpha數字字符到中間括號以允許它們被解析。

+1

......但是在'-'之前加上它們,否則你會得到令人驚訝的結果。 –

18
^\d{1,2}[\W_]?po$ 

\d定義了許多和{1,2}裝置1或兩個表達之前,\W限定的一個非字字符。

+0

\ W不包括_,他想要 –

+0

這是正確的,將它改爲[\ W | _] – stema

+0

更正爲'[\ W_]'。 –

相關問題