Google スプレッドシートは、REGEXMATCH や REGEXEXTRACT といった関数で正規表現が使える。
こんな感じで
=REGEXEXTRACT("数字は 123 です。", "\d+")
ただ、この正規表現は RE2 という正規表現エンジンを使っているようで、普段自分が JavaScriptなどで使っている書き方とは異なるものがあった。のでメモ。
具体的には、パターン修飾子、single line や 欲張りでないマッチについて。
パターン修飾子の single line
正規表現のドット .
が改行を含むかどうかの指定。
JavaScript だと
/a.*b/s
といった書き方になる。最後の /s
パターン修飾子。これでドットは改行にマッチするようになる。
スプレッドシートの場合は
(?s)a.*b
と書く。正規表現の先頭に (?s)
をつける。
パターン修飾子の欲張りでないマッチ
JavaScript だと
/a.*?b/
といった書き方。量指定子のあとに ?
をつけることで、欲張りでないマッチになる。
スプレッドシートの場合は
(?U)a.*b
と書く。正規表現の先頭に (?U)
をつける。ungreedy の U らしい。
その他
single line も欲張りでないマッチも有効にしたい場合は
(?sU)a.*b
とこんな感じ。
スプレッドシートで使える正規表現 RE2 のドキュメントは、ここを見ればよさそう