正規表現を使う文字列関数: Notion Formula 解説 (20)

はじめに

Notion Formula の第20回目では正規表現を使うの文字列に関するメソッドを解説します。すでに逆引き Formula のページに関数説明があるので、このページを見ながら解説していきます。

正規表現以外: join, repeat, lower, upper, substring, style, unstyle, link, split

正規表現関係: test, match, replace, replaceAll

正規表現

正規表現は複雑な文字列の検索に使う表現です。これを解説するとすごい量になるので、ここでは省略します。さまざまな便利なサイトがあるのでそちらを参照してください。サンプルに出てきた表現のみ解説します。

test()

「test()」は値が正規表現に一致する場合はtrueを返し、そうでない場合はfalseを返します。文法は以下のようになります。1行目は str の一部が Notion という文字にマッチするので true になっています。2行目は正規表現でのマッチを確認しています。「.」は任意の文字、「*」は前の文字が0個以上ある場合にマッチします。最初のものが「ABC」に、二番目のものが「DEF」、最後のものが「GHI」にマッチし、それらの間に「, 」の区切り文字がマッチするため、結果は true になっています。

prop("str").test(regular_expression)

test

match()

「match()」は正規表現に一致したものすべてをリストとして返します。この例では、数値1文字にマッチする「\d」が1文字以上の繰り返し「+」すればマッチします。すなわち連続する数値がマッチになります。「/」で区切られた日付文字列からは 3 つ、ISO 時間からは 8 つの数字文字列が取得され、リストとして返ります。

prop("arg1").match(regular_expression)

match

replace()

「replace()」は正規表現の最初の一致を置換値に置き換えます。文法は以下のようになります。複数箇所にマッチした場合でも、最初に一致したものだけが書き変わります。また $1 とすると、正規表現内で保存した () で括られた最初のものに変換されます。ここでは使っていませんが、$2 とすると二番目の () で括られたものに変換されます。

prop("arg1").replace(regular_expression, change_text)

replace

replaceAll()

「replaceAll()」は正規表現のすべての一致を置換値に置き換えます。replace と異なり、複数回マッチしても、そのすべてが置き換わります。Notion がすべて Motion に書き変わっています。また、二番目の正規表現では任意の a-z、A-Z のアルファベットにマッチする「\w」を使っています。() は最初の一文字だけにかかっているので、すべてのアルファベットの単語が最初の一文字に変換されます。

prop("arg1").replaceAll(regular_expression, change_text)

replaceAll

おわりに

今回は、正規表現を使った文字列に関するメソッドを解説しました。明日からは日付に関するメソッドについて解説していきます。