代码之家  ›  专栏  ›  技术社区  ›  Pavel Shliaha

如何替换某个字符的所有出现,但如果该字符是字符串中的第一个,则不替换?

  •  2
  • Pavel Shliaha  · 技术社区  · 1 周前

    我有以下矢量

    x = c("AXX", "XAX", "XXA")
    

    我想更换所有 "A" "B" 在里面 x ,但如果 A. 位于字符串的开头。所需:

    c("AXX", "XBX", "XXB")
    
    1 回复  |  直到 1 周前
        1
  •  3
  •   thelatemail    1 周前

    在正则表达式中使用否定的起始锚点:

    x <- c("AXX", "XAX", "XXA")
    

    基准R

    gsub("(?!^)A", "B", x, perl=TRUE)
    ##[1] "AXX" "XBX" "XXB"
    

    字符串

    library(stringr)
    str_replace(x, "(?!^)A", "B")
    ##[1] "AXX" "XBX" "XXB"