Tableau×落とし穴 ~正規表現~
技術系に詳しくなければそもそも正規表現って何?ですよね、普通(笑)
正規表現とは
ざっくり説明だと、ある「文字列」と「特定の文字列」比較して、含まれていたらあれこれ操作できる機能、です(独断と偏見)。
詳細はWikipediaあたりで確認してください。
Tableau関数
REGEXP_REPLACE
REGEXP_MATCH
REGEXP_EXTRACT
REGEXP_EXTRACT_NTH
一番基本となる機能はMATCHでしょうか(引数がシンプル、結果も真偽で分かりやすい)
stringには文字列を指定するだけなので難しくないのですが、patternがやっかいです。初めて見ると暗号にしか見えません。
しかし、慣れてくるとない世界には戻れません(便利すぎます)
patternは単なる文字列
関数や演算子(+など)で色々加工できます。
文字列として扱う場合は、'文字列' のようにシングルクオテーションでくくります。"文字列" のようにダブルクオテーションも可、です。
正規表現でヌマるパターン
正規表現の構文を理解できていない(今回は扱わない)
理解できているけどその文字列に加工できていない
文字列加工(文字列演算)の例
"a"+"b"="ab"
"(a"+"|"+"b)"="(a|b)"
よくある失敗1
変数が""でくくられて「変数」という文字列になっている
"a"+"変数"+"b"="a変数b"
例えば、パラメータで打ち込んだ "ab" を正規表現のpatternとして扱いたい場合に、"a"+"[パラメータ]"+"b"としてしまうとどうなるか。
求める文字列は、"aabb" ですが、ここで出来上がる文字列は、"a[パラメータ]b" です。
対策
pattern部分を計算フィールドで独立させて、どのような文字列になっているか確認する(超重要)
よくある失敗2
いきなり完成形を書こうとする
Excel VBAの質問でも多いのですが、経験が少ない人ほど、いきなり難しいコードを書こうとしています。
上級者ほど、シンプルなコードをまず動かして、正しく動いたら1行付け足して、といった書き方をします(多分。スーパーハカーはいきなり長文の完成されたコードを書けるらしいですが、残念ながら身近なところでお目にかかったことがありません・・・)
対策
求めたい機能をばらして、それぞれの機能が動くことを確認して、その後に機能を組み合わせる。
今回、そもそもこの正規表現のnoteを書くきっかけになったのは、
このQuestionに答えるためです。
使うだろう機能はこの4つ(かな?)。
変数
複数条件 ⇒(a|b) "a"または"b"を含む
前方一致 ⇒ ^a aで始まる
文字列結合 ⇒ "a"+"b"="ab"
まずは変数で動くかを確認します。
動いたら、2つの変数をつなげてみます。
変数で動いたので複数条件を試します
同じく変数で前方一致
複数条件はできたので、前方一致の複数条件を指定
結果だけならこれでもOK。
だが、しかし!
ユーザーに「|」を入力させることはできないだろうから、関数側で「|」を処理して、パラメータを2つ入力させる。
ラスト! 「^」も関数側で処理
まとめ
正規表現は、とにかく「慣れ」と「根気」だと思います。
あとは検索して解説しているパターンと結果をいろんな種類を実際に見て、真似してみる。
さぁ、皆さんも正規表現の世界へ!
関連リンク
そもそもの始まり
正規表現の仕組み(師匠より)
この記事が気に入ったらサポートをしてみませんか?