嗨,我有一个看起来像的字符串
string = "Tom (Marketing Assistant)/Gary (Manager)/Forty"
并且我想删除括号内的所有部分,以便结果为 "Tom/Gary/Forty"
。
我试过 string %>% str_remove("\\(.+\\)")
但输出是 "Tom /Forty"
似乎是因为正则表达式匹配采用第一个 (
直到最后一个 )
我尝试使用 string %>% str_extract("\\(.+\\)")
进行可视化,它给出了 "(Marketing Assistant)/Gary (Manager)"
。我无法指定太具体的括号内的内容,因为括号中有一系列字符(并非完全相同),所以有没有办法以仅删除括号内的内容的方式对其进行编码,可能告诉它在遇到 /
时停止删除,因为这跟在每个括号后面?
答案 0 :(得分:1)
使用 str_remove_all
删除所有出现的内容。
stringr::str_remove_all(string, '\\(.*?\\)')
#[1] "Tom /Gary /Forty"
在基础 R 中,使用 gsub
-
gsub('\\(.*?\\)', '', string)
这会删除左括号和右括号之间的所有字符。问号 (?
) 使正则表达式非贪婪,因此它只匹配到第一个右括号。由于我们使用的是 str_remove_all
/gsub
,因此所有此类事件都已删除。
答案 1 :(得分:1)
我们也可以
library(stringr)
str_replace_all(string, "[(][^)]+[)]", "")
#[1] "Tom /Gary /Forty"