如何从字符串中提取指定部分?R语言字符串提取问题
R语言提取字符串中特定分隔符间的内容
针对你给出的字符串向量:
bb <- c("\\dat\\Bjkjgf_Yloiut_dsezr_proj_111_999.txt","\\dat\\Bjkjgf_Yloezr_proj_111_999.txt")
由于两个字符串长度不同,固定位置的substr()无法通用,推荐用正则表达式实现动态匹配提取,以下是两种可行方案:
方案一:基础R的sub()函数
利用正则捕获组,匹配并保留目标内容:
result <- sub(".*\\\\(.*)_proj.*", "\\1", bb) # 输出结果 result # [1] "Bjkjgf_Yloiut_dsezr" "Bjkjgf_Yloezr"
正则逻辑说明:
.*\\\\:匹配到最后一个反斜杠(R中需用四个反斜杠表示单个实际反斜杠)(.*):捕获反斜杠后、_proj前的所有内容(即目标部分)_proj.*:匹配_proj及后续所有字符\\1:将整个字符串替换为捕获到的目标内容
方案二:stringr包的str_extract()函数
如果习惯更直观的正则写法,可使用stringr包的提取函数:
library(stringr) result <- str_extract(bb, "(?<=\\\\).*?(?=_proj)")
正则逻辑说明:
(?<=\\\\):正向预查,定位到反斜杠之后的位置.*?(?=_proj):非贪婪匹配任意字符,直到遇到_proj(不包含_proj本身)
内容的提问来源于stack exchange,提问作者Tpellirn
相关产品推荐
相关产品推荐

