R语言求助:如何提取斜杠/前、中间及最后的字符串?
拆分带斜杠的字符串解决方案
先定义目标字符串:
x <- "123/456/789"
1. 获取第一个斜杠/之前的内容
基础R实现
用gsub匹配第一个斜杠及后续所有内容,替换为空:
gsub("/.*", "", x) # 输出 "123"
或者用strsplit拆分后取第一个元素:
strsplit(x, "/")[[1]][1] # 输出 "123"
stringr包实现
用str_remove移除斜杠及后续内容:
stringr::str_remove(x, "/.*") # 输出 "123"
或者用str_extract提取开头到第一个斜杠前的非斜杠字符:
stringr::str_extract(x, "^[^/]+") # 输出 "123"
2. 获取两个斜杠/之间的内容
基础R实现
用gsub同时移除开头到第一个斜杠、以及最后一个斜杠到结尾的内容:
gsub("^.*/|/.*$", "", x) # 输出 "456"
或者拆分后取第二个元素:
strsplit(x, "/")[[1]][2] # 输出 "456"
stringr包实现
用正则预查匹配两个斜杠之间的内容:
stringr::str_extract(x, "(?<=/)[^/]+(?=/)") # 输出 "456"
或者拆分后取第二个元素:
stringr::str_split(x, "/")[[1]][2] # 输出 "456"
3. 获取最后一个斜杠/之后的内容
基础R实现
用gsub移除最后一个斜杠之前的所有内容:
gsub(".*/", "", x) # 输出 "789"
或者拆分后取第三个元素:
strsplit(x, "/")[[1]][3] # 输出 "789"
stringr包实现
用str_remove移除最后一个斜杠及之前的内容:
stringr::str_remove(x, ".*/") # 输出 "789"
或者用str_extract提取结尾的非斜杠字符:
stringr::str_extract(x, "[^/]+$") # 输出 "789"
内容的提问来源于stack exchange,提问作者R18
相关产品推荐
相关产品推荐

