R语言使用strsplit分割字符串如何将标点作为单独元素返回
解决方案
你原来的代码仅按空格拆分,因此逗号会和前面的单词绑定为一个元素,调整正则规则即可实现需求,两种实现方式如下:
方式1:基础R原生实现
调整正则拆分规则,同时匹配空格、逗号前的零宽位置、逗号后的零宽位置,需要开启perl=TRUE参数支持零宽断言语法:
file_name <- 'I am a good boy who went to Africa, Brazil and India' strsplit(file_name, "(?=,)|(?<=,)| ", perl = TRUE)
运行输出和你要求的预期结果完全一致:
[[1]] [1] "I" "am" "a" "good" "boy" "who" "went" "to" "Africa" "," "Brazil" "and" "India"
方式2:使用stringr包提取
如果你常用tidyverse生态工具,也可以用str_extract_all直接提取所有目标元素:
library(stringr) file_name <- 'I am a good boy who went to Africa, Brazil and India' str_extract_all(file_name, "\\w+|,")
运行结果和上述方式完全相同。
内容的提问来源于stack exchange,提问作者89_Simple
相关产品推荐
相关产品推荐

