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

在R语言中移除括号内的数字与冒号

在R语言中移除字符串括号内的数字和冒号

这里提供几种简洁的实现方式,针对示例输入AC1(d12:20)-OH,能直接得到期望输出AC1(d)-OH,同时支持处理多括号场景:

方法1:基础R + 正则环视(最简洁)

利用正则的正向环视定位括号内的数字和冒号,直接替换为空:

input_str <- "AC1(d12:20)-OH"
# 开启perl正则支持环视语法
output_str <- gsub("(?<=\\()[0-9:]+(?=\\))", "", input_str, perl = TRUE)
output_str
# 输出结果:"AC1(d)-OH"

如果是多括号的情况,比如输入AB2(e3:45)CD(f67)-GH,运行后会得到AB2(e)CD(f)-GH,完全符合需求。

方法2:基础R + 嵌套替换

通过外层匹配整个括号内容,内层替换括号里的目标字符:

input_str <- "AC1(d12:20)-OH"
output_str <- gsub("\\((.*?)\\)", function(x) {
  # 先去掉匹配到的字符串的首尾括号,再移除数字和冒号,最后重新加括号
  inner_content <- gsub("[0-9:]", "", substr(x, 2, nchar(x)-1))
  paste0("(", inner_content, ")")
}, input_str)
output_str
# 输出结果:"AC1(d)-OH"

方法3:使用stringr包(语法更直观)

如果习惯用stringr处理字符串,可以这么写:

library(stringr)
input_str <- "AC1(d12:20)-OH"
output_str <- str_replace_all(input_str, "\\((.*?)\\)", function(match) {
  # 提取括号内的内容,移除数字和冒号后重新拼接括号
  inner <- str_remove_all(str_sub(match, 2, -2), "[0-9:]")
  paste0("(", inner, ")")
})
output_str
# 输出结果:"AC1(d)-OH"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 19:51:09