【问题标题】:Replace characters only if it is not repeating仅在不重复的情况下替换字符
【发布时间】:2023-02-07 23:59:39
【问题描述】:

有没有办法只在不重复或重复一定次数时才替换字符?

str = c("ddaabb", "daabb", "aaddbb", "aadbb")
gsub("d{1}", "c", str)
[1] "ccaabb" "caabb"  "aaccbb" "aacbb" 

#Expected output
[1] "ddaabb" "caabb"  "aaddbb" "aacbb" 

【问题讨论】:

    标签: r regex vector


    【解决方案1】:

    您可以在正则表达式中使用否定环视来排除 d 之前或之后是另一个 d 的情况:

    gsub("(?<!d)d(?!d)", "c", str, perl=TRUE)
    

    【讨论】:

    • 这会在我的控制台上引发错误。添加 perl = TRUE 修复它
    • 感谢您的反馈!我不熟悉 R,所以不知道它使用的是什么正则表达式引擎...将您的评论添加到我的回答中!
    猜你喜欢
    • 1970-01-01
    • 2014-05-04
    • 1970-01-01
    • 2015-02-12
    • 1970-01-01
    • 2014-12-24
    • 1970-01-01
    • 1970-01-01
    • 2016-10-14
    相关资源
    最近更新 更多