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

如何在R语言向量中按模式删除字符串的括号及内部内容?

批量删除向量字符串中的括号及内部内容

嘿,这个需求我熟!要批量去掉你向量里每个字符串的括号及内部内容,用正则表达式配合R的字符串处理函数就能轻松搞定,给你两种常用的方法:

方法1:Base R 原生函数 gsub()

Base R自带的gsub()可以直接完成替换,核心是写对匹配括号及内容的正则表达式:

# 你的原始向量
stri <- c("protein mono-ADP-ribosylation (GO:0140289)","negative regulation of viral life cycle (GO:1903901)","viral life cycle (GO:1901)")

# 批量清理
stri_clean <- gsub("\\s*\\(.*?\\)", "", stri)

# 查看结果
stri_clean

正则表达式解释:

  • \\s*:匹配括号前的任意数量空格(包括0个),确保清理后字符串不会留多余空格
  • \\(:转义左括号(因为括号在正则里是特殊字符,必须用\\转义)
  • .*?:非贪婪匹配任意字符,直到遇到第一个\\)(右括号),这样能精准匹配括号内的全部内容
  • \\):转义右括号

运行后你会得到干净的结果:

[1] "protein mono-ADP-ribosylation"       "negative regulation of viral life cycle" "viral life cycle"

方法2:用stringr包(Tidyverse 风格)

如果你习惯用tidyverse生态,stringr包的str_remove_all()语法更直观,可读性更强:

# 先加载包(如果没安装先运行 install.packages("stringr"))
library(stringr)

stri_clean_str <- str_remove_all(stri, "\\s*\\(.*?\\)")
stri_clean_str

这个方法的正则和Base R的完全一样,只是函数更语义化,结果和上面完全一致。

小提醒

如果你的字符串里存在多个括号(比如嵌套括号),这个正则可能不适用,但从你的示例来看都是单个括号的情况,这个写法完全够用。如果是复杂场景,再调整正则就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 23:57:30