【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

コメント一覧 (1件)

  • ullam nihil tempora eos cum illo illum sit eveniet qui. iure dolor enim ea rem molestias ex earum pariatur dolorum. est et quod aut maxime rerum impedit. eveniet commodi aut esse aut et illum assumenda error ex dolorem repudiandae. ut pariatur accusantium praesentium quia repellendus id.

コメントする

目次