正则表达式删除多个括号

时间:2021-06-17 03:58:19

标签: r regex

嗨,我有一个看起来像的字符串 string = "Tom (Marketing Assistant)/Gary (Manager)/Forty" 并且我想删除括号内的所有部分,以便结果为 "Tom/Gary/Forty"

我试过 string %>% str_remove("\\(.+\\)") 但输出是 "Tom /Forty" 似乎是因为正则表达式匹配采用第一个 ( 直到最后一个 )我尝试使用 string %>% str_extract("\\(.+\\)") 进行可视化,它给出了 "(Marketing Assistant)/Gary (Manager)"。我无法指定太具体的括号内的内容,因为括号中有一系列字符(并非完全相同),所以有没有办法以仅删除括号内的内容的方式对其进行编码,可能告诉它在遇到 / 时停止删除,因为这跟在每个括号后面?

2 个答案:

答案 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"
相关问题