You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用R正则表达式在3-2OT的2与OT间插入短横线?

解决R正则表达式插入连字符的问题

要实现将字符串3-2OT转换为3-2-OT,你可以使用以下两种R正则表达式方案:

方案1:捕获组替换

利用捕获组分别匹配数字和OT,再在两者间插入连字符:

input_str <- "3-2OT"
result <- gsub("(\\d)(OT)", "\\1-\\2", input_str)
# 输出结果:"3-2-OT"
  • 正则(\\d)(OT):(\\d)捕获单个数字,(OT)捕获后续的OT
  • 替换式\\1-\\2:将第一个捕获组(数字)、连字符、第二个捕获组(OT)拼接起来

方案2:正向零宽断言

通过正向预查定位数字后的位置,直接插入连字符(需开启Perl兼容正则):

input_str <- "3-2OT"
result <- gsub("(?<=\\d)(OT)", "-\\1", input_str, perl = TRUE)
# 输出结果:"3-2-OT"
  • 正则(?<=\\d)(OT):(?<=\\d)是正向预查,确保当前位置前是数字;(OT)匹配目标字符串
  • 替换式-\\1:在匹配到的OT前添加连字符

你之前的问题原因

你使用的\\d+\\d+是匹配连续的多位数序列(比如"1234"),和当前「数字+OT」的场景完全不匹配,所以无法得到预期结果。

内容的提问来源于stack exchange,提问作者Brad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 03:22:39