匹配模式并获取字符串的部分



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

MRT01_60DOOO3-0013577

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

MRT_01_02_620D或

MRT_01_02_60M或

MRT_03_12D

最后一部分:OOO3-0013577的长度必须始终为12个字符,并且"-"位于第5位。

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

'MRT01'

'60D'

'OOO3-0013'

'577'

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

提前非常感谢。

孙。

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

在Regex101 检查

您要查找的所有项目都被分组(()),所以请检查匹配的第1组到第4组。

对于这两个字符串:

MRT01_60DOOO3-0013577
MRT_01_60MOOO3-0013577

正则表达式(MRT.*?d{2}).*(d{2}D|d{2}M)(.{4}-.{4})(.{3})将匹配以下内容:

group 1     MRT01
group 2     60D
group 3     OOO3-0013
group 4     577
group 1     MRT_01
group 2     60M
group 3     OOO3-0013
group 4     577

在捕获和构造字符串后,用您选择的语言(C#),只需使用_等不需要的字符替换即可

最新更新