我刚刚再次开始使用R,我想知道是否有一种方法可以使用通配符替换字符串的一部分。
例如:
说我有
S1 <- "aaaaaaaaa[aaaaa]aaaa[bbbbbbb]aaaa"
我想用“x”替换方括号内的所有内容,以使新字符串为
"aaaaaaaaa[x]aaaa[x]aaaa"
在R中可以这样做吗?
请注意,方括号中的内容可以是可变长度的。
最佳答案
一个简单的正则表达式就像
\\[.+?\\]
示例 http://regex101.com/r/xE1rL1/1
示例用法
s1 <- 'aaaaaaaaa[aaaaa]aaaa[bbbbbbb]aaaa'
gsub("\\[.+?\\]", "[x]", s1)
## [1] "aaaaaaaaa[x]aaaa[x]aaaa"
正则表达式
\\[
与开头[
.+?
任何内容的非贪婪匹配\\]
匹配结束]
编辑
为了安全起见,如果
[]
中不存在任何内容,则可以将regex稍作修改为s1 <- 'aaaaaaaaa[]aaaa[bbbbbbb]aaaa'
gsub("\\[.*?\\]", "[x]", s1)
##[1] "aaaaaaaaa[x]aaaa[x]aaaa"