R语言中按条件移除字符串特定数字段的实现方法
解决R中字符串向量的特定替换需求
可以使用R的gsub()函数结合正则表达式完成这个需求,核心是利用负向后行断言确保只替换"prih"之外的下划线间数字部分:
# 定义原始向量 vec <- c("993540002_prih_10_new_10153_2.pdf", "993540002_prih_11_old_13369_3.pdf", "993540002_prih_12_older_18217_4.pdf") # 执行替换 result <- gsub("(?<!prih)_\\d+_", "_", vec, perl = TRUE) # 查看结果 result
运行后输出结果如下:
[1] "993540002_prih_10_new_2.pdf" "993540002_prih_11_old_3.pdf" "993540002_prih_12_older_4.pdf"
正则表达式说明
(?<!prih):负向后行断言,匹配位置的前侧不能是"prih"字符串,避免修改prih_xx_中的数字部分_\\d+_:匹配"下划线+一个或多个数字+下划线"的组合- 替换为单个
_,从而移除中间的数字序列
内容的提问来源于stack exchange,提问作者prdel99
相关产品推荐
相关产品推荐

