2013-10-07 69 views
0

我不擅長正則表達式。但是,我不知道我在這裏做錯了什麼。我需要一個正則表達式將匹配「-E1(」或「-E22(」等我目前正在創建工作正則表達式

var pattern = @"[-E][0-9]?\s\(" 

但是它會返回匹配項「S1-E2(702)」或「S3-E16 (705)」。

任何幫助將是巨大的。使用C#。

回答

0

刪除周圍-E括號。再加上它看起來像你期望的多個數字,所以用[0-9] +。最後的正則表達式將會像-E [0-9] {1,2} \ s(。將{1,2}+如果您期望超過兩個d igits。

3

隨着[-E]你要在這裏匹配-E ..not兩者

來匹配多個數字使用[0-9]+ .. +是一個量詞來匹配1對多位數

所以,它應該是

var pattern = @"-E\d+\s\(" 
+0

在這個問題答案Anirudh也將[0-9]更改爲\ d在練習中都是代表「全部數字」。 – n4m16

1

如何簡單地做..

var pattern = @"-E[0-9 ]+\(" 

正則表達式:

-E   '-E' 
[0-9 ]+  any character of: '0' to '9', ' ' (1 or more times) 
\(   '(' 

以下量詞是公認的:

*  Match 0 or more times 
+  Match 1 or more times 
?  Match 1 or 0 times 

或者你可以使用:

var pattern = @"-E[\d ]+\(" 
+0

這將允許在括號和空格之前的多個空格_位於數字之內 - 因此將拾取「-E2 3 4(例如」,除非這是期望的行爲,否則空格應該不在[]內。 – n4m16