st = list("amber johnson", "anhar link ari")
t = stringr::str_match_all(st, "(\\ba[a-z]+\\b)")
str(t)
# List of 2
# $ : chr [1, 1:2] "amber" "amber"
# $ : chr [1:2, 1:2] "anhar" "ari" "anhar" "ari"
为什么结果重复如此?
答案 0 :(得分:3)
如果您查看?str_match_all
值,则会显示:
对于str_match,一个字符矩阵。第一列是完全匹配, 然后是每个捕获组的一列。对于str_match_all,a 字符矩阵列表。
由于模式包含捕获组,因此结果包含两列,一列用于捕获组的完全匹配。如果您不想要重复列,可以从模式中删除组括号:
st = list("amber johnson", "anhar link ari")
t = str_match_all(st, "\\ba[a-z]+\\b")
str(t)
给出了:
# List of 2
# $ : chr [1, 1] "amber"
# $ : chr [1:2, 1] "anhar" "ari"