我刚刚再次开始使用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"
    

    09-25 16:31