c# - RegEx 文本中的多个匹配项

标签 c# regex

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

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

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

最佳答案

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

  • [a-aA-Z] - 一个 ASCII 字母,然后
  • (1) - 1 数字(并放入捕获中)
  • \d - 任何一位数字
  • 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();

关于c# - RegEx 文本中的多个匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43942819/

相关文章:

c# - 是否有用于阅读 ePub 书籍的 API?

PHP preg_replace 忽略\h 和\v 标志

c# - 可以在 MySQL Select 语句中允许正则表达式匹配吗?

php - 使用以问号作为通配符的输入查找潜在的莫尔斯电码字符串匹配

c# - PIxelFormat之间如何相互转换?

c# - Unity3D - 获取组件

c# - .NET 3.5 中有 GUID.TryParse() 吗?

c# - 调试时,我可以在 LINQ 中查看导致异常的对象吗?

mysql - 如何编写一个 mysql 语句,其中列出以字符列表的字母开头的元素?正则表达式

java - java中基于空格和匹配引号的正则表达式分割字符串