この記事では正規表現を使った文字列の取り出し・置換方法をご紹介します。
正規表現とは?
いくつかの文字列のパターンを一つの文字列(形式)で表現する方法です。
正規表現を使用することで、文字列の抽出や置換を効率的に処理することができます。
正規表現例)
左の4種類の文字列は、正規表現を使うと右の文字列1つで表現することが可能です。
Tulipの正規表現
Tulipでは式にあるREGEX_MATCH()、REGEX_REPLACE()の2つの関数で正規表現が使用できます。
- REGEX_MATCH(元の文字列, 正規表現(取り出したい部分))
元の文字列から任意の文字列を取り出す場合に使用します。
正規表現内の()で括った部分を取り出すことができます。
元の文字列と抽出したい文字列は配列として取り出されるため一度配列の変数に保存した後、
配列のインデックスを指定して抽出したい文字列のみを取り出し、変数に保存します。
※元の文字列には変数を選択することも可能です。
例)Tulip 01から01のみを取り出す
トリガの設定:
①元の文字列・取り出したい文字列を配列の変数(本記事では「取り出した文字列」)に保存する
※式 REGEX_MATCH(”Tulip 01”, "T\\w{4}\\s(0[12])")
②抽出した文字列のインデックス(今回は1)を指定し、変数(本記事では「配列から取り出した文字列」)に保存する
トリガ実行結果:
- REGEX_REPLACE(元の文字列, 置換したい文字列の正規表現, 置換後の文字列)
任意の文字列を置換する場合に使用します。
置換された後の文字列全体が変数に保存されます。
例)Tulip 01のTulipをTULIPに置換する
トリガの設定:
置換後の文字列を変数(本記事では「置換後の文字列」)に保存する
※式 REGEX_REPLACE(”Tulip 01","T\\w{4}","TULIP")
トリガ実行結果:
LEFT、RIGHT、MID関数との違い
LEFT、RIGHT、MID関数は取り出す文字列の文字数が決まっている場合に有効ですが、
正規表現は取り出したい文字列の文字数が不規則であっても全体として法則性がある場合に有効です。
例えば2023/9/1 8:00:00 と 2023/9/26 10:00:00のように日付時刻の桁数が揃っていないものを判定する際は正規表現を使います。
正規表現例一覧
※日本語でも対応可能ですが、式に日本語を直接入力することができないため、
メモ帳等で入力した文字をコピペする必要があります。
正規表現 | 説明 | 例 |
ABC | ”ABC”という文字列にマッチする | |
[ABC] | A, B, Cのいずれか1文字にマッチする | |
[^ABC] | A, B, C以外のいずれか1文字にマッチする | |
[A-Z] | A~Zの間の1文字にマッチする | |
\\ | 次の文字をエスケープする(正規表現と認識させる) | \\w、\\s |
^ | 行の先頭にマッチする | ^Aは"A"から始まる文字列にマッチする AAB ...マッチする BAA ...マッチしない |
$ | 行の末尾にマッチする | A$は"A"で終わる文字列にマッチする AAB ...マッチしない BAA ...マッチする |
* | 直前の文字の0回以上の繰り返しにマッチする | fe* ..."f", "fe", "fee"などにマッチする |
+ | 直前の文字の2回以上の繰り返しにマッチする | fe+ ..."fe", "fee"などにマッチする |
{n} | 直前の文字にn回マッチする | [0-9]{3} ...3桁の数字にマッチする |
{n,} | 直前の文字にn回以上マッチする | [0-9]{3,} ...3桁以上の数字にマッチする |
{m,n} | 直前の文字にm~n回マッチする | [0-9]{3,5} ...3~5桁の数字にマッチする |
. | 改行文字以外のどの1文字にもマッチする | .n ..."there is an apple on the desk."の場合、"an"と"on"にマッチする |
\\w | 大/小文字のアルファベット・数字・アンダースコアにマッチする | [A-Z], [a-z], [0-9]と同義なことに加え、 "_"にマッチする |
\\W | 大/小文字のアルファベット・数字・アンダースコア以外にマッチする | [^\\w]と同義 日本語や記号にマッチする |
\\d | 数字にマッチする | [0-9]と同義 |
\\D | 数字以外にマッチする | [^0-9]と同義 |
\\n | 改行にマッチする |
[0-9]{3}\\n[a-z]{3} ... 123 abc にマッチする |
\\t | タブ文字にマッチする | |
\\s | 空白文字にマッチする |
[0-9]{3}\\s[a-z]{3} ... 123 abcにマッチする |
\\S | 空白以外の文字にマッチする | [^\\s]と同義 |