regex - R-使用通配符替换字符串的一部分

标签 regex r

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

    关于regex - R-使用通配符替换字符串的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27246353/

    相关文章:

    正则表达式的 JavaScript 小数位限制

    javascript - VSCode 搜索替换正则表达式

    需要 Javascript 正则表达式帮助

    java - 如何在 Java 正则表达式中使用反向引用

    python - 如何在字符串中找到特定的字符并将其放在字符串的末尾

    r - 将一位数的月和日转换为 POSIXct

    r - 在多个条件下的R data.table子集。

    css - 如何将多个样式表附加到 rmarkdown 文档?

    r - 在 R 中为箱线图添加名称

    r - 在图片的特定区域绘制点