问题描述
我正在使用正则表达式来查找非常简单的模式。
但是,我想在比赛之间插入一个连字符。
我对编写RegEx匹配模式非常熟悉,但是在如何使用RegEx替换插入字符方面遇到了麻烦。
我的RegEx是:
(\ d {1,2})([A-Z] {1,3})(_)?(\ d {3,4})
匹配:
- 03EM0109
- 03EM0112
- 03EM0151
- 3V204
- 02SDV_0900
我希望使用RegEx Replace的输出在匹配项之间输入连字符以给我:
- 03-EM-0109
- 03-EM-0112
- 03-EM-0151
- 3-V-204
- 02-SDV-0900
我尝试更改RegEx并为之间的空模式输入编号的捕获组,但是当使用replace函数时,它仅返回连字符。大概是因为null捕获组实际上没有捕获任何东西吗?
使用:
(\ d {1,2})()([A-Z] {1,3})()(_)?()(\ d {3,4})
并替换为 $ 2- $ 4- $ 5-
返回3个连字符---
有人可以帮忙吗......
解决方法
如果您使用RegExp (\d{1,2})([A-Z]{1,3})_?(\d{3,4})
,并替换为$1-$2-$3
,那么它似乎会产生所需的结果。我删除了下划线周围的捕获组