English · PDF 239
#> #> [[2]] #> [1] "green" "red" #> #> [[3]] #> [1] "orange" "red"
你将在第 302 页的“递归向量(列表)”以及第 17 章中进一步了解列表。
如果使用 simplify = TRUE,str_extract_all() 将返回一个矩阵,其中较短的匹配会被扩展到与最长匹配相同的长度:
str_extract_all(more, color_match, simplify = TRUE) #> [,1] [,2] #> [1,] "blue" "red" #> [2,] "green" "red" #> [3,] "orange" "red" x <- c("a", "a b", "a b c") str_extract_all(x, "[a-z]", simplify = TRUE) #> [,1] [,2] [,3] #> [1,] "a" "" "" #> [2,] "a" "b" "" #> [3,] "a" "b" "c"
在本章前面,我们讨论了使用括号来明确优先级以及在匹配时进行反向引用。你还可以使用括号来提取复杂匹配中的部分内容。例如,假设我们想从句子中提取名词。作为一种启发式方法,我们会查找位于 "a" 或 "the" 之后的任何单词。在正则表达式中定义“单词”有点棘手,所以这里我使用一个