从字符串中提取特定单词

时间:2018-01-16 09:45:12

标签: r

我需要提取" join"之后出现的所有单个单词。 R中以下字符串中的单词。

db<- c("select *
        FROM a
        left join bd on bd.id=a.id
        left join ca on ca.id=a.id
        left join dc on dc.id=a.id
        where a.names != NULL")

我的结果应该是 &#34; BD&#34; &#34; CA&#34; &#34; DC&#34;

上述查询是否有最佳方法。

1 个答案:

答案 0 :(得分:0)

使用stringr::str_match_all(.)将字符串与正则表达式匹配。您可以使用称为“捕获组”的正则表达式的功能。这意味着,您可以使用()对正则表达式的部分内容进行分组。然后他们的内容会在结果中单独显示:

library(stringr)
res <- str_match_all(db, "join ([a-z]+)")
res
[[1]]
     [,1]      [,2]
[1,] "join bd" "bd"
[2,] "join ca" "ca"
[3,] "join dc" "dc"

您会看到结果是一个元素的列表([[1]]输出部分可以看到,或者您使用str(res))。如果您提供的是字符串向量而不是仅提供一个字符串,则此列表将包含更多元素。在每个列表元素中,都有一个字符串矩阵。矩阵的每一行是正则表达式匹配的输入字符串的一个位置。矩阵的每列是正则表达式的捕获组(...)之一。第一列始终是整个匹配。因此,第二列包含您正在寻找的内容。

正如评论中所述,请查看R for Data Science > Stringsstringr documentation > Regular expressions以了解该主题。