RegExp在文本

时间:2017-05-12 16:49:57

标签: c# regex

我想写一个正则表达式来获得第一个字符和下三个数字的多个匹配项。一些有效的例子: A123, V322, R333。 我尝试类似的东西

[a-aA-Z](1)\d3

但它让我成为第一场比赛! enter image description here 你能否告诉我,如何重写这个正则表达式以获得多个结果?非常感谢你,祝你有愉快的一天!

1 个答案:

答案 0 :(得分:4)

你的正则表达式不起作用,因为它匹配:

  • [a-aA-Z] - ASCII字母,然后
  • (1) - 一个1数字(并放入捕获)
  • \d - 任意1位数
  • 3 - 3数字。

因此,它匹配Y193E103等,即使在较长的短语中,YE不是第一个字母

您需要使用单词边界并将模式修复为

\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();