R言語で、一致した文字列の中から特定のグループだけをすべて抽出する方法について解説します。文字列の操作には、tidyverseパッケージに含まれているstringrパッケージを使用するのが便利です。ここでは、stringrパッケージのstr_match()を使用した方法についてお伝えします。
str_match_all()の概要
str_match_all()は、一致した文字列の中から特定のグループだけをすべて抽出するための関数です。名前なしの(パターン)キャプチャグループ、および名前付き(?
str_match_all()の使い方
str_match_all(string, pattern)
str_match_all()の引数
string
文字ベクトルまたは文字ベクトルに変換可能なものを指定します。
pattern
正規表現を指定します。
パターンには少なくとも1つのキャプチャグループを含める必要があります。
str_match_all()の戻り値
文字列/パターンと同じ長さのリストで、文字行列が含まれます。各行列は上記の列を持ち、各一致ごとに1行が保持されます。
準備
あらかじめ、tidyverseパッケージを読み込んでおきます。
library(tidyverse)
使用例
文字列「あいうえお|あいうえお」と「かきくけこ」で、「う」が含まれる文字列に対して、「う」の前後一文字をすべて抽出するには次のようにします。
str_match_all(c("あいうえお|あいうえお", "かきくけこ"), "(.)う(.)")
[[1]]
[,1] [,2] [,3]
[1,] "いうえ" "い" "え"
[2,] "いうえ" "い" "え"
[[2]]
[,1] [,2] [,3]