r语言 - 正则表达式删除多个括号



嗨,我有一个看起来像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.

最新更新