【Tableau関数】REGEXP_EXTRACTの使い方をわかりやすく解説!条件にあった値を抜き出せる!

今回はREGEXP_EXTRACT関数を解説します。
正規表現パターンに応じて結果を返してくれます。
一致したうえで、その中のグループだけを抽出するためちょっとややこしいです。

目次

REGEXP_EXTRACT関数とは?

REGEXP_EXTRACT関数には3つの機能があります。

  1. 指定値の中に正規表現に一致する値があるかどうかを判定
  2. 一致した値があればグループ化された部分だけを返す
  3. 一致したものがなければNullを返す

REGEXP_EXTRACT関数の書式

REGEXP_EXTRACT関数の書式
REGEXP_EXTRACT([指定値],正規表現)

正規表現は下記を参考にしてみてください。

正規表現パターンに応じて結果を返す

REGEXP_EXTRACTは文字列関数の1つで、正規表現パターンと一致した値を返す関数です。
早速使い方を見ていきましょう。

そのままを返す

REGEXP_EXTRACT([判別したい項目],”(.*)”)

上記を計算フィールドで実行すると、そのままの値が返ってきます。
カンマはなんでもいい1文字、*は繰り返しを意味する正規表現です。
()はグループです。
REGEXP_EXTRACTはパターンと一致しているかを判定し、一致していればその中のグループだけを返します。

つまり、上記の式を翻訳すると
なんでもいい文字で全文字が構成された唯一のグループを返す。
東京都でも埼玉県でも福井県でも全部一緒です。
そのまま返ってきます。

最後の1字で判定し、最初の1字をとってくる

REGEXP_EXTRACT([都道府県],"(^.).*都$")

今度の例では”都”で終わる値の時に、1文字目が返ってきます。
それ以外はNULLです。
[都道府県]が”東京都”なら”東”が返ってきます。

注目してほしいのは()の位置です。
先ほどの例ではすべてを()で囲んでいましたが、今回は先頭だけです。
この違いが返される値の範囲に影響を与えているわけです。
REGEXP_EXTRACTは1番最初にグループ化されている部分だけを返してくれます。

ちなみに、^は先頭を$は終端を表す正規表現です。
細かくは別途正規表現の項で確認してください。

REGEXP_EXTRACT_NTHについて

REGEXP_EXTRACTには派生関数のREGEXP_EXTRACT_NTHというものもあります。
基本的にはREGEXP_EXTRACTと同じですが、グループの位置を指定できます。

REGEXP_EXTRACT([都道府県],"(^.).*都$")

先ほどの例に出した↑だと、グループは一つしかありません。

試しに.もグループ化してみましょう。

REGEXP_EXTRACT([都道府県],"(^.)(.)都$")

↑のようになりました。

REGEXP_EXTRACTのままだと相変わらず”東”を返します。
これをREGEXP_EXTRACT_NTHに変えます。
追加する点は末尾に取得位置です。

REGEXP_EXTRACT_NTH([都道府県],"(^.)(.*)都$",2)

今回は2番目を指定します。
すると”京”が返ってくるようになります。

もちろん1を指定すれば”東”となります。

REGEXP_EXTRACT_NTH([判別したい項目],”(正規表現パターン)(正規表現パターン)正規表現パターン”,位置番号)

↑のようになります。
※正規表現は組み合わせが無限にあるため、覚える必要はないです。

おわり

もっと良い使い方、おかしい点、アドバイスなどあれば気軽にコメントください!

福井AI/データサイエンス協会

読んでくれてありがとうございます!!

Comment

コメントする

目次