首页 > 解决方案 > 匹配模式并获取部分字符串

问题描述

我尝试将我的 C# 应用程序中的字符串与 regex 匹配:

MRT01_60DOOO3-0013577

规则是:MRT01_60D 可以包含多个下划线,例如 MRT_01_02_60D,但在最后一个下划线之后,字符串必须是:整数 + 'D' 或整数 + 'M',如:

MRT_01_02_620D 或

MRT_01_02_60M 或

MRT_03_12D

最后一部分:OOO3-0013577 长度必须始终为 12 个字符,并在第 5 位为“-”。

检查字符串的匹配后,我想得到 4 个部分:

'MRT01'

'60D'

'OOO3-0013'

'577'

你能帮我找到正则表达式吗?

提前非常感谢。

埃里克。

标签: c#regex

解决方案


(.*)_(\d*[DM])(.{4}-.{4})(.{3})
  • (.*)找到 MRT 部分(基本上是任何字符 ( .) 任意次数 ( *)
  • _D 或 M 部分前的下划线
  • (\d*[DM])查找以 D 或 M ( ) 结尾*的任意位数( )\d[DM]
  • ((.{4}-.{4}))找到 4 ( {4}) 个任意字符 ( .),中间有一个连字符,另外 4 个字符
  • (.{3})在末尾找到 3 个字符

在Regex101检查它

您要查找的所有项目都放在组中 ( ()),因此请查看匹配的第 1 组到第 4 组。


推荐阅读