尝试使用 gsub 将模式匹配替换为“”

Trying to replace a pattern match with "" using gsub

这是一个字符串:

x <- "[CAD]-Other"

我想去掉方括号内的所有内容,这样

>x
"-Other"

我试过了:

gsub("^\[[^\]]*\]$", "", x)
[1] "[CAD]-Other"

我使用 regex101 来完整性检查我的正则表达式,它似乎在那个网站上有效: https://regex101.com/r/Xl77pO/1

如何替换字符串中方括号内包含的任何内容?

我们可以匹配一个方括号(转义 -\[,因为它是一个元字符)后跟零个或多个不是右方括号 ([^]]*) 的字符,后跟一个右方括号括号 (\]),替换为空白 ("")

gsub("\[[^]]*\]", "", x)
#[1] "-Other"

对于这个例子,即使 sub 也足够了

sub("\[[^]]*\]", "", x)
#[1] "-Other"
library(rebus)
library(stringr)

x <- "[CAD]-Other"

str_replace(x, pattern = START %R% "\[" %R% one_or_more(WRD) %R% "]", "")
str_replace(x, pattern = "\[" %R% one_or_more(WRD) %R% "]", "")