我不擅长正则表达式。但是,我不知道我在这里做错了什么。我需要一个正则表达式将匹配“-E1(”或“-E22(”等我目前正在创建工作正则表达式
var pattern = @"[-E][0-9]?\s\("
但是它会返回匹配项“S1-E2(702)”或“S3-E16 (705)”。
任何帮助将是巨大的。使用C#。
我不擅长正则表达式。但是,我不知道我在这里做错了什么。我需要一个正则表达式将匹配“-E1(”或“-E22(”等我目前正在创建工作正则表达式
var pattern = @"[-E][0-9]?\s\("
但是它会返回匹配项“S1-E2(702)”或“S3-E16 (705)”。
任何帮助将是巨大的。使用C#。
删除周围-E括号。再加上它看起来像你期望的多个数字,所以用[0-9] +。最后的正则表达式将会像-E [0-9] {1,2} \ s(。将{1,2}与+如果您期望超过两个d igits。
随着[-E]
你要在这里匹配-
或E
..not两者
来匹配多个数字使用[0-9]+
.. +
是一个量词来匹配1对多位数
所以,它应该是
var pattern = @"-E\d+\s\("
如何简单地做..
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 ]+\("
这将允许在括号和空格之前的多个空格_位于数字之内 - 因此将拾取“-E2 3 4(例如”,除非这是期望的行为,否则空格应该不在[]内。 – n4m16
您shoulb与-E来代替你的代码\ d +
在这个问题答案Anirudh也将[0-9]更改为\ d在练习中都是代表“全部数字”。 – n4m16