created: 2022-06-11T14:26:57.346Z

Presto へのクエリに正規表現を使う

6.11. Regular Expression Functions — Presto 0.177 Documentation

regexp_extract(string:string, pattern:regexp, group:int)

  • \d, \w といった正規表現がつかえる (Java 互換らしい)
  • 括弧でマッチグループを複数つくって、group で指定した部分だけ抜き出したり出来る
  • 3 つ目の引数で、何個目のキャプチャを抜き出すか指定する
練習

1 つめのキャプチャを取得した場合。

select regexp_extract(
  'ID:RECOMMEND:123:456',
  '^ID:(\w+):(\d+):(\d+)',
  1
)

RECOMMEND

select regexp_extract(
  'ID:RECOMMEND:123:456',
  '^ID:(\w+):(\d+):(\d+)',
  3
)

456

select regexp_extract(
  'ID:RECOMMEND:123:456',
  '^ID:(\w+):(\d+):(\d+)',
  0
)

ID:RECOMMEND:123:456

DB にクエリする前に自分でつくったテスト文字列で試せるの便利。

知ってるつもり 無知の科学 (ハヤカワ文庫NF)
[ad] 知ってるつもり 無知の科学 (ハヤカワ文庫NF)
スティーブン スローマン, フィリップ ファーンバック (Kindle版)