如何使用gsub在文件路径指定位置插入单词而非替换?
解决方案
方法1:直接精准替换
最简洁的方式是直接匹配/strip/子串,将其替换为/strip/old/,不会影响后续的文件名:
aa <- "Downloads/strip/2022.dat" aa <- gsub("/strip/", "/strip/old/", aa) # 输出结果:"Downloads/strip/old/2022.dat"
方法2:捕获组实现插入(适配复杂场景)
如果需要避免误匹配其他位置的strip/,可以用捕获组保留原/strip/内容,再插入old/:
aa <- "Downloads/strip/2022.dat" aa <- gsub("(/strip/)", "\\1old/", aa) # 输出结果:"Downloads/strip/old/2022.dat"
这里(/strip/)是捕获组,\\1表示引用捕获到的/strip/内容,拼接old/后完成插入操作。
原代码失效原因
你之前的正则\/strip/.+会匹配从/strip/开始到字符串末尾的所有内容(.+表示任意字符至少出现一次),替换后会把/strip/2022.dat整体换成/Old/,最终得到Downloads/Old/,自然达不到插入效果。
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

