2013-10-07 49 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