0

我不擅长正则表达式。但是,我不知道我在这里做错了什么。我需要一个匹配“-E1(”或“-E22(”等)的正则表达式。我目前正在尝试

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

但它不返回“S1-E2 (702)”或“S3-E16 (705)”的匹配项。

任何帮助都会很棒。使用 C#。

4

4 回答 4

3

[-E]你将匹配-E..不是两者

要匹配多个数字,请使用[0-9]+..+这是一个匹配 1 到多个数字的量词

所以,应该是

var pattern = @"-E\d+\s\("
于 2013-10-07T11:16:39.330 回答
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 ]+\("
于 2013-10-07T11:35:50.420 回答
0

删除 -E 周围的括号。另外,看起来您需要多个数字,因此请使用 [0-9]+。最终的正则表达式类似于-E[0-9]{1,2}\s(。如果您期望超过两位数,请将{1,2}替换为+ 。

于 2013-10-07T11:16:25.827 回答
-1

你应该用 -E\d+ 替换你的代码

于 2013-10-07T11:40:14.647 回答