c# - 匹配模式并获取部分字符串
问题描述
我尝试将我的 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'
你能帮我找到正则表达式吗?
提前非常感谢。
埃里克。
解决方案
(.*)_(\d*[DM])(.{4}-.{4})(.{3})
(.*)
找到 MRT 部分(基本上是任何字符 (.
) 任意次数 (*
)_
D 或 M 部分前的下划线(\d*[DM])
查找以 D 或 M ( ) 结尾*
的任意位数( )\d
[DM]
((.{4}-.{4}))
找到 4 ({4}
) 个任意字符 (.
),中间有一个连字符,另外 4 个字符(.{3})
在末尾找到 3 个字符
在Regex101检查它
您要查找的所有项目都放在组中 ( ()
),因此请查看匹配的第 1 组到第 4 组。
推荐阅读
- assembly - 如果文件在 gnu 中太大,则组装失败
- msbuild - 为什么 ninja build 和 msbuild 不能使用超过大约 50%?
- javascript - .click() 函数不让控件进入函数体
- ionic-framework - 使用相机后画布不更新(Android / Ionic)
- java - 为什么某些方法抛出的异常不需要处理
- sql - 使用单行字符串创建视图
- c - 如何优化此代码?斐波那契素数代码?
- docker - 为什么 docker push 证书文件上的注册表错误?
- r - 查找位于其他 DataFrame 上的两列值之间的 DataFrame 的值
- python - 如何跨函数视图和 CBV 传递 ID?- 姜戈