我尝试将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#
),只需使用_
等不需要的字符替换即可