正则表达式:无需代码合并捕获组,排除中间数字合并前后文本
解决方案
由于你使用的是JS正则引擎(regexr.com基于该引擎),无法直接通过单个捕获组跳过中间数字并合并abc和def,但可以通过正则替换实现需求,无需编写额外代码:
- 正则表达式:
(abc)[0-9]*(def) - 在regexr的「Replace」输入框中填入
$1$2 - 开启
global和multiline标志后,即可直接得到合并后的abcdef结果
你之前尝试的表达式问题解析
(abc([0-9]*)def):外层捕获组会包含整个匹配内容(包括中间数字),内层捕获组仅用于保存数字,不会排除外层组的内容(abc(?=[0-9]*)def):正向预查(?=[0-9]*)不消耗字符,正则实际要求abc后直接跟def,与你的文本结构不符,因此无匹配(abc\2)[0-9]*(def)和(abc)[0-9]*(\1def):反向引用\2在使用前未定义,\1引用的abc会要求文本中出现abcdef前重复abc,均不符合你的文本结构(abc(?:[0-9]*)def):非捕获组(?:...)仅用于避免创建额外捕获组,不会排除外层捕获组中的数字内容,因此外层组仍会包含整个字符串
内容的提问来源于stack exchange,提问作者Jediweirdo
相关产品推荐
相关产品推荐

