今回はTableau Prepで正規表現を使った文字列抽出 入門編やります!
文字列から特定のパターンにマッチする部分だけ抜き出したいということはあると思います。
その「特定のパターン」を表現するために使うのが正規表現なのですが、慣れていない人は敬遠しがちかと思います(記号の羅列で、なんだかよく分かりませんよね・・・)。
今回は入門編ですので、初めての方でも分かるように、書き方を一から詳しく解説したいと思います!
正規表現の書き方
パターン1~3の3つの日付データから文字列抽出するための正規表現を書いてみます。
Tableau Prepで正規表現で文字列抽出するには次の関数を使います。
正規表現のパターンと一致する文字列の一部を返す | REGEXP_EXTRACT(string, pattern) |
※詳細はTableauヘルプ その他の関数を参照
patternに指定する正規表現を書いていきます。
正規表現を書くためにやることは次の2つです。
・データを観察して、切り出したい部分と文字列の規則性を調べる
・見つけ出した規則性をメタ文字に置き換えてパターンを作る
では早速やっていきましょう!
パターン1
ここから日付部分(yyyy/MM/dd)だけを抽出してみたいと思います。
数値4桁 / 数値2桁 / 数値2桁 以降の文字列すべて不要
これを正規表現になおすと次の通りです。
(\d{4}/\d{2}/\d{2}).*
メタ文字 | 説明 |
\d | 半角数字1文字 |
{n} | n回繰り返す |
. | 任意の1文字 |
* | 直前のパターンの0回以上繰り返し |
/ はそのまま指定しています。
さらに、抽出したい日付部分を()で囲みます。
実行結果
日付部分が取れました!
パターン2
ちょっとだけパターン1のデータよりも難しくなりました。
年月部分の桁数が固定ではないです・・・。
数値4桁固定 / 数値1桁または2桁 / 数値1桁または2桁 以降の文字列すべて不要
「1桁または2桁」の部分はいろいろな書き方ができますが、今回は次のように書いてみます
(\d{4}/\d+/\d+).*
メタ文字 | 説明 |
+ | 直前のパターンの1回以上繰り返し |
+を指定することで、数値1文字以上ということになるので、1桁にも2桁どちらにも対応ができます。
実行結果
日付部分が取れました!
パターン3
これが最後のデータです。
ずっと固定だった/がついに可変になりました・・・。/(スラッシュ)と-(ハイフン)、どちらでも対応できる正規表現を書かないといけないです。
数値4桁固定 /または- 数値1桁または2桁 /または- 数値1桁または2桁 以降の文字列すべて不要
「1桁または2桁」の部分はいろいろな書き方ができますが、今回は次のように書いてみます
(\d{4}[/-]\d+[/-]\d+).*
メタ文字 | 説明 |
[] | [](角括弧)内に指定した文字のいずれか1文字 例)[abc] = aまたはbまたはc |
[/-]と指定すれば/または-を表現するため、/と-どちらの形式の日付にも対応ができます。
実行結果
日付が全部取れました~!
【おわりに】
正規表現入門編、いかがでしたでしょうか?
記事内にも少し書きましたが、書き方の正解は一つではなく、様々な書き方ができます。
書いた正規表現をチェックできるサイトもたくさんありますので、いろいろ試しながら書いてみてください!