首页 > 解决方案 > 如何提取特定字符串之后的所有内容?

问题描述

我想在 R 中的字符串向量中提取“-”之后的所有内容。

例如在:

test = c("Pierre-Pomme","Jean-Poire","Michel-Fraise")

我想得到

c("Pomme","Poire","Fraise")

谢谢 !

标签: rregex

解决方案


str_extract. \\b是与词边界匹配的零长度标记。这包括任何非单词字符:

library(stringr)
str_extract(test, '\\b\\w+$')
# [1] "Pomme"  "Poire"  "Fraise"

我们也可以使用反向引用sub\\1指由第一个捕获组匹配的字符串(.+),它是任何字符一次或多次后跟-在末尾:

sub('.+-(.+)', '\\1', test)
# [1] "Pomme"  "Poire"  "Fraise"

str_replace如果已经加载,这也适用:

library(stringr)
str_replace(test, '.+-(.+)', '\\1')
# [1] "Pomme"  "Poire"  "Fraise"

第三个选项是使用strsplit并从列表的每个元素中提取第二个单词(类似于word@akrun 的答案):

sapply(strsplit(test, '-'), `[`, 2)
# [1] "Pomme"  "Poire"  "Fraise"

stringr对此也有 str_split变体:

str_split(test, '-', simplify = TRUE)[,2]
# [1] "Pomme"  "Poire"  "Fraise"

推荐阅读