R×stringr::str_match 一致した文字列の中から特定のグループだけを抽出する

R言語で、一致した文字列の中から特定のグループだけを抽出する方法について解説します。文字列の操作には、tidyverseパッケージに含まれているstringrパッケージを使用するのが便利です。ここでは、stringrパッケージのstr_match()を使用した方法についてお伝えします。

str_match()の概要

str_match()は、一致した文字列の中から特定のグループだけを抽出するための関数です。名前なしの(パターン)キャプチャグループ、および名前付き(?パターン)キャプチャグループで定義された任意の数の一致を抽出します。デフォルトの演算の優先順位をオーバーライドする必要があり、結果をキャプチャしたくない場合は、非キャプチャグループ (?:パターン) を使用します。

str_match()の使い方


str_match(string, pattern)

str_match()の引数

string

文字ベクトルまたは文字ベクトルに変換可能なものを指定します。

pattern

正規表現を指定します。
パターンには少なくとも1つのキャプチャグループを含める必要があります。

str_match()の戻り値

文字列/パターンの長さと同じ行数の文字行列を返します。
最初の列は完全な一致で、その後に各キャプチャグループごとに1列が続きます。「名前付きキャプチャグループ」を使用した場合(例: (?パターン))、列には名前が付けられます。

準備

あらかじめ、tidyverseパッケージを読み込んでおきます。


library(tidyverse)

使用例

文字列「あいうえお」と「かきくけこ」で、間に「う」が含まれる文字列に対して、最初と最後の一文字を出するには次のようにします。


str_match(c("あいうえお", "かきくけこ"), "^(.).*う.*(.)$")

     [,1]         [,2] [,3]
[1,] "あいうえお" "あ" "お"
[2,] NA           NA   NA