カスタマイズ

正規表現を用いてフィールドの値を置換する

概要

フィールドの値で正規表現にマッチする部分を別の文字列に置換します。

使い方

設定するパラメーター

「フィールド」「正規表現」「置換文字列」「複数ヒットした場合」を設定します。

フィールド

置換を行いたいフィールドを選択します。 複数選択することが可能で、選択したフィールド全てを同時に置換します。

選択可能なフィールドタイプは以下の通りです。

  • 文字列(1行)
  • 文字列(複数行)
  • リッチエディター
  • リンク

テーブル内のフィールドを指定した場合、特別な場合(*1)を除き、テーブル内のすべての行に対して処理されます。

(*1) 条件側で、「フィールドの値を編集して値が変わった時」のように、テーブル行を限定するように条件が入っている場合は、対象の行だけ処理されます。

正規表現

正規表現を入力します。

(\d+)-(\d+)-(\d+)

置換文字列

ヒットした部分を置きかえる文字列を入力します。 このパラメーターを空にすると、置換によって「置換前文字列」を削除するという意味になります。

$1 $2 … などで、正規表現中のカッコ () で捕捉された部分マッチ文字列に置き換えることができます。 ただしこの場合、Customine の数式機能における $1、すなわち、他のアクションの結果を参照する機能と混同しないように注意してください。

例:正規表現中のカッコで一致した部分に置換する。(式ではないので「=」ではじめません。)

$1年$2月$3日

例:他のアクションの結果に置換する。(Customine の式を使用する場合、「=」ではじめます。)

=$1

複数ヒットした場合

「置換前文字列」フィールド値の中に複数あった場合の動作を、「すべて置換」「最初の1つだけ置換」の中から選びます。

「すべて置換」を選ぶと、見つかった「置換前文字列」をすべて置換します。 「最初の1つだけ置換」を選んだ場合、見つかったもののうち最初のもの(文章として手前のもの)だけを置換します。

krewSheet 対応状況

対応しています。

ただし、ルックアップでコピーされるフィールドには対応していません。

また、以下のフィールドは「レコードを保存する直前(削除時は除く)」のようなレコード保存のタイミングのみで対応しています。やや専門的になりますが、より詳しく知りたい方は krewSheet のドキュメント も参考にしてください。

  • krewSheet の表示列に含まれていないフィールド
  • krewSheet で読み取り専用に設定されているフィールド
  • リッチエディターフィールド

旧バージョンとの動作の違いについて

Customine のバージョン1.161(2022年2月10日リリース)で動作に変更があります。互換性を維持するため、1.160(2022年1月27日リリース)以前のものは「正規表現を用いてフィールドの値を置換する(旧)」という名前で引き続き使用できます。新旧のバージョンでの動作の違いは以下の通りです。

  • 正規表現のメタ文字 ^ $ の扱いが異なります。
    • 1.160以前(旧) … ^ は文頭、$ は文末のみにマッチし、行頭行末にマッチしません。
    • 1.161以降 … ^ は文頭に加え行頭、$ は文末に加え行末にもマッチします。(マルチラインモード)

制限事項

  • 正規表現のマッチング、置換処理は JavaScript 標準の RegExp を使用します。そのため、使用可能な特殊文字など正規表現の細かい動作は、Web ブラウザーの RegExp 実装に依存します。

関連記事