R语言如何用stringr删除指定前缀并给匹配字符串追加.PR后缀
基于stringr包的R语言字符串处理方案
首先加载依赖包、定义原始向量:
library(stringr) raw_vec <- c("BAAAVAST", "BAACEZ", "BAAGECBA", "LOL")
方案1:正则替换一步实现(最简洁)
直接用str_replace()匹配前缀并替换,未匹配的字符串自动保留原值:
result <- str_replace(raw_vec, "^BAA(.*)", "\\1.PR")
- 正则说明:
^BAA匹配字符串开头的"BAA"前缀,(.*)捕获前缀之后的所有字符 - 替换逻辑:用
\\1引用捕获的内容,直接拼接.PR后缀,无匹配的字符串不会执行替换
方案2:分步判断处理(逻辑更易理解)
先判断是否符合前缀要求,再对符合要求的字符串单独处理:
# 判断是否以BAA为前缀 has_prefix <- str_starts(raw_vec, "^BAA") result <- ifelse( has_prefix, paste0(str_remove(raw_vec, "^BAA"), ".PR"), raw_vec )
也可以用截取子串的方式删除前缀,等价实现:
result <- ifelse( str_starts(raw_vec, "^BAA"), paste0(str_sub(raw_vec, 4), ".PR"), raw_vec )
两种方案最终输出都符合预期:
print(result) # 输出:"AVAST.PR" "CEZ.PR" "GECBA.PR" "LOL"
内容的提问来源于stack exchange,提问作者JEŠTĚR
相关产品推荐
相关产品推荐

