如何在R语言中按指定分隔符位置提取目标文本?
R语言提取指定分隔符位置间的文本
方法1:拆分字符串后提取目标元素
用strsplit()把字符串按分隔符拆分成向量,直接取对应位置的元素即可。可以根据分隔符的实际形式(带空格/不带空格)选择拆分方式:
a <- "hello, my, name, is, monty, and, i, would, like, something, to, drink" # 方式1:按", "(逗号加空格)拆分,直接取第5个元素 split_vec <- strsplit(a, ", ")[[1]] target_text <- split_vec[5] print(target_text) # 输出 "monty" # 方式2:按逗号拆分后,去除每个元素的前后空格 split_vec <- strsplit(a, ",")[[1]] split_vec_trimmed <- trimws(split_vec) target_text <- split_vec_trimmed[5] print(target_text) # 输出 "monty"
方法2:用正则表达式直接匹配
如果不想拆分整个字符串,也可以用stringr包的str_extract()配合正则表达式,精准定位第4和第5个逗号之间的内容:
library(stringr) a <- "hello, my, name, is, monty, and, i, would, like, something, to, drink" # 利用正向回溯断言匹配目标内容,最后去除空格 target_text <- str_extract(a, "(?<=^[^,]*,[^,]*,[^,]*,[^,]*,)[^,]+") %>% trimws() print(target_text) # 输出 "monty"
正则说明:(?<=^[^,]*,[^,]*,[^,]*,[^,]*,)是正向回溯断言,匹配从字符串开头到第4个逗号的位置;[^,]+匹配后续直到下一个逗号的所有非逗号字符,最后用trimws()清理空格。
内容的提问来源于stack exchange,提问作者TheBoomerang
相关产品推荐
相关产品推荐

