嗨,我有一个看起来像string = "Tom (Marketing Assistant)/Gary (Manager)/Forty"
,我想删除括号内的所有部分,以便结果"Tom/Gary/Forty"
.
我已经尝试过string %>% str_remove("\(.+\)")
但输出"Tom /Forty"
,似乎因为正则表达式匹配需要第一个(
直到最后一个)
,我尝试用string %>% str_extract("\(.+\)")
可视化,这给出了"(Marketing Assistant)/Gary (Manager)"
。我不能指定太具体的内容,因为括号中有一系列字符(并不完全相同),那么有没有办法以一种只删除括号内的内容的方式对其进行编码,可能是告诉它一旦遇到/
就停止删除,因为这遵循每个括号?
我们也可以做
library(stringr)
str_replace_all(string, "[(][^)]+[)]", "")
#[1] "Tom /Gary /Forty"
使用str_remove_all
删除所有匹配项。
stringr::str_remove_all(string, '\(.*?\)')
#[1] "Tom /Gary /Forty"
在基本 R 中,使用gsub
-
gsub('\(.*?\)', '', string)
这将删除左圆括号和右圆括号之间的所有字符。问号 (?
) 使正则表达式不贪婪,因此它只匹配到第一个右括号。所有这些事件都被删除,因为我们使用的是str_remove_all
/gsub
.