我想写一个正则表达式来获得第一个字符和下三个数字的多个匹配项。一些有效的例子: A123, V322, R333。 我尝试类似的东西
[a-aA-Z](1)\d3
答案 0 :(得分:4)
你的正则表达式不起作用,因为它匹配:
[a-aA-Z]
- ASCII字母,然后(1)
- 一个1
数字(并放入捕获)\d
- 任意1位数3
- 3
数字。因此,它匹配Y193
,E103
等,即使在较长的短语中,Y
和E
不是第一个字母
您需要使用单词边界并将模式修复为
\b[a-aA-Z][0-9]{3}
注意:如果您需要将其整体匹配,请在结尾添加\b
:\b[a-aA-Z][0-9]{3}\b
。
请参阅regex demo。
<强>详情:
\b
- 领先的字边界[a-aA-Z]
- ASCII字母[0-9]{3}
- 3位数。C#代码:
var results = Regex.Matches(s, @"\b[a-aA-Z][0-9]{3}")
.Cast<Match>()
.Select(m => m.Value)
.ToList();