首页 > 解决方案 > 使用 stringr 提取包含特定字符集的字符串中的整个单词

问题描述

我有一系列具有特定字符集的字符串。我想做的是能够从字符串中提取包含这些字符的单词,然后丢弃其余的。

我已经尝试了各种正则表达式来做到这一点,但我要么让它拆分所有单词,要么它返回整个字符串。以下是字符串种类的示例。我一直在尝试使用stringr::str_extract_all(),因为在某些情况下需要删除多个单词。

data <- c("AlvariA?o, 1961","Andrade-Salas, Pineda-Lopez & Garcia-MagaA?a, 1994", "A?vila & Cordeiro, 2015", "BabiA?, 1922")

result <- unlist(stringr::str_extract_all(data, "regex"))

从此我想要一个结果,它可以提取所有带有“A?”的单词,如下所示:

result <- c("AlvariA?o", "MagaA?a", "A?vila", "BabiA"?)

这看起来很简单,但我的正则表达式知识目前还没有削减它。

标签: rregexstringr

解决方案


要匹配?它需要用 转义\\?,所以A\\?会匹配A?\\w匹配任何单词字符(相当于 [a-zA-Z0-9_])并*匹配前一个标记在零次和无限次之间,尽可能多次,根据需要返回(贪婪)。

unlist(stringr::str_extract_all(data, "\\w*A\\?\\w*"))
#[1] "AlvariA?o" "MagaA?a"   "A?vila"    "BabiA?"   

推荐阅读