←
PDF 239 / 520 Exercises
→
English · PDF 239
Original PDF page 239
中文 · 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"

练习

    1. 在前面的示例中,你可能已经注意到正则表达式匹配到了 "flickered",它并不是一种颜色。请修改正则表达式来解决这个问题。
    1. 从 Harvard sentences 数据中提取:
    • a. 每个句子中的第一个单词。
    • b. 所有以 ing 结尾的单词。
    • c. 所有复数形式的单词。

分组匹配

在本章前面,我们讨论了使用括号来明确优先级以及在匹配时进行反向引用。你还可以使用括号来提取复杂匹配中的部分内容。例如,假设我们想从句子中提取名词。作为一种启发式方法,我们会查找位于 "a" 或 "the" 之后的任何单词。在正则表达式中定义“单词”有点棘手,所以这里我使用一个