如何在R语言中仅替换非重复或重复特定次数的字符?
如何仅替换孤立出现的特定字符?
你需要替换字符串中仅单独出现1次的'd',同时保留连续重复的'd'。原代码中gsub("d{1}", "c", str)会错误地将连续'd'中的每个单个'd'都替换,无法达到只修改孤立'd'的需求。
解决方案
使用正则表达式的环视断言来精准匹配孤立的单个'd',确保其前后都不是'd'。在R中需要启用Perl兼容正则模式:
str = c("ddaabb", "daabb", "aaddbb", "aadbb") # 匹配前后均不为'd'的单个'd',替换为'c' gsub("(?<!d)d(?!d)", "c", str, perl = TRUE)
执行后输出符合预期:
[1] "ddaabb" "caabb" "aaddbb" "aacbb"
正则说明
(?<!d):负向后视断言,确保当前匹配的'd'前面没有其他'd'(?!d):负向前视断言,确保当前匹配的'd'后面没有其他'd'perl = TRUE:开启Perl兼容正则,让R支持环视语法
内容的提问来源于stack exchange,提问作者Maël
相关产品推荐
相关产品推荐

