RegExp在文本中匹配匹配

Qwe*_*rty 6 c# regex

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

[a-aA-Z](1)\d3
Run Code Online (Sandbox Code Playgroud)

但它让我只是第一场比赛! 在此输入图像描述 你能否告诉我,如何重写这个正则表达式来获得多个结果?非常感谢你,祝你有愉快的一天!

Wik*_*żew 4

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

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

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

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

\b[a-aA-Z][0-9]{3}
Run Code Online (Sandbox Code Playgroud)

注意:如果需要将其作为整个单词进行匹配,请\b在末尾添加:\b[a-aA-Z][0-9]{3}\b

请参阅正则表达式演示

细节

  • \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();
Run Code Online (Sandbox Code Playgroud)