R语言正则:如何匹配大括号内的短横线并移除
在R语言中移除大括号内部的短横线
要实现只删除大括号{}内部的短横线-,可以借助R的gsub()函数结合环视(lookaround)正则表达式来精准定位目标字符,具体步骤如下:
1. 定义输入字符串
先把需要处理的字符串赋值给变量:
input_str <- "{EP03-C18} - {EP03-C19}"
2. 使用gsub()处理字符串
利用支持Perl风格正则的gsub(),通过环视规则精准匹配大括号内的-并替换为空:
output_str <- gsub("(?<=\\{[^}]+)-(?=[^}]+\\})", "", input_str, perl = TRUE)
运行这段代码后,output_str的结果就是你想要的:{EP03C18} - {EP03C19}
正则表达式解释
这里的正则(?<=\\{[^}]+)-(?=[^}]+\\})各部分含义:
(?<=\\{[^}]+):正向反向预查,确保当前位置前面是{加上任意数量非}的字符(也就是处于大括号内部)-:我们要匹配并删除的短横线(?=[^}]+\\}):正向预查,确保当前位置后面是任意数量非}的字符加上}(确保还在大括号内部)perl = TRUE:开启Perl正则模式,这样才能支持环视语法
补充:处理多横线场景
如果你的字符串里有多个大括号内的横线(比如{EP03-C18-D20} - {EP04-E21}),这个正则也能一次性删除所有大括号内的-,适配性很强。
内容的提问来源于stack exchange,提问作者ulrich
相关产品推荐
相关产品推荐

