我想编写一个正则表达式来获取第一个字符和接下来的三个数字的多个匹配项。一些有效的例子: A123, V322, R333。 我尝试类似的东西
[a-aA-Z](1)\d3
最佳答案
您的正则表达式不起作用,因为它匹配:
[a-aA-Z]
- 一个 ASCII 字母,然后(1)
-1
数字(并放入捕获中)\d
- 任何一位数字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();
关于c# - RegEx 文本中的多个匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43942819/