ADVERTISEMENT

【Googleスプレッドシート】REGEXREPLACE関数で正規表現置換!パターンの書き方

【Googleスプレッドシート】REGEXREPLACE関数で正規表現置換!パターンの書き方
🛡️ 超解決

Googleスプレッドシートで文字列を置換したいとき、REGEXREPLACE関数を使うと正規表現による高度な置換が可能です。通常の置換では難しい複雑なパターンでも、正規表現を組み合わせることで一括で処理できます。この記事では、REGEXREPLACE関数の基本的な使い方から、実用的な正規表現パターンの書き方までを詳しく解説します。実際の例文を交えながら、よく使うパターンを身につけていきましょう。

【要点】REGEXREPLACE関数で正規表現置換を使いこなすポイント

  • =REGEXREPLACE(テキスト, 正規表現, 置換文字列) の基本構文: 第1引数に元の文字列、第2引数に正規表現パターン、第3引数に置換後の文字列を指定します。
  • メタ文字の使い方: . * + ? ^ $ [ ] ( ) | \ などを使い、任意の文字や繰り返し、グループ化を表現します。
  • 実務で役立つ応用例: 電話番号のハイフン削除、メールアドレスのドメイン抽出、空白除去など、様々な文字列整形に利用できます。

ADVERTISEMENT

REGEXREPLACE関数の仕組みと正規表現の基本

REGEXREPLACE関数は、指定したテキストから正規表現にマッチする部分を検索し、それを別の文字列に置き換える関数です。構文は =REGEXREPLACE(テキスト, 正規表現, 置換文字列) の3つの引数を取ります。第1引数は元の文字列を含むセルか直接のテキスト、第2引数は正規表現のパターン(ダブルクォーテーションで囲む)、第3引数は置換後の文字列です。

正規表現とは、文字列のパターンを記号で表現する方法です。たとえば、ドット「.」は任意の1文字を表し、アスタリスク「*」は直前の文字が0回以上繰り返すことを意味します。角括弧「[ ]」は文字クラスで、指定した文字のどれか1文字にマッチします。括弧「( )」はグループ化に使い、後方参照でマッチした部分を置換時に再利用できます。バックスラッシュ「\」はエスケープ記号で、直後の文字を特別な意味ではなく通常の文字として扱います。

REGEXREPLACE関数の基本操作

まずは、REGEXREPLACE関数の基本的な使い方をご説明します。以下の手順で、簡単な置換を試してみましょう。

  1. データを用意する
    セルA1に置換したい文字列を入力します。例えば「Hello World」と入力します。
  2. 関数を入力するセルを選択
    結果を表示したいセル(例:B1)をクリックして選択します。
  3. REGEXREPLACE関数を入力する
    数式バーに =REGEXREPLACE(A1, "World", "Google") と入力し、Enterキーを押します。これで「World」が「Google」に置き換わり、「Hello Google」と表示されます。
  4. 確認する
    セルB1に結果が反映されていることを確認します。正規表現を使わない単純な置換も、このように実行できます。

よく使う正規表現パターンと応用例

任意の1文字「.」を使った置換

  1. 例題を準備する
    セルA1に「cat, cut, cot」と入力します。
  2. 関数を入力する
    セルB1に =REGEXREPLACE(A1, "c.t", "car") と入力します。パターン「c.t」は「c」+任意の1文字+「t」にマッチします。
  3. 結果を確認する
    「car, car, car」と置き換わります。ただし「cut」も「cot」も「cat」もすべて「car」になります。

文字クラス「[ ]」で特定の文字のみマッチ

  1. 例題を準備する
    セルA1に「color, colour, colore」と入力します。
  2. 関数を入力する
    セルB1に =REGEXREPLACE(A1, "colou?r", "color") と入力します。ここで「?」は直前の文字(u)が0または1回あることを意味します。「u」がなくても「u」があってもマッチします。
  3. 結果を確認する
    「color, color, colore」と置き換わります。ただし「colore」は「color」に続いて「e」があるため、正確に置換されません。対策としては「colou?r[^e]?」などとします。

アンカー「^」と「$」で先頭と末尾を指定

  1. 例題を準備する
    セルA1に「apple pie」、A2に「pineapple」と入力します。
  2. 先頭にマッチさせる
    セルB1に =REGEXREPLACE(A1, "^apple", "orange") と入力します。「^」は文字列の先頭を意味します。「apple pie」の先頭がappleなので「orange pie」になります。
  3. 末尾にマッチさせる
    セルB2に =REGEXREPLACE(A2, "apple$", "orange") と入力します。「$」は文字列の末尾を意味します。「pineapple」の末尾はappleなので「pineorange」になります。

繰り返し「*」と「+」と「{n}」

  1. 例題を準備する
    セルA1に「gooood」と入力します。
  2. アスタリスク「*」で0回以上
    =REGEXREPLACE(A1, "o*", "a") と入力します。「o*」は「o」が0回以上連続する部分にマッチします。結果は「gagad」となります。
  3. プラス「+」で1回以上
    =REGEXREPLACE(A1, "o+", "a") と入力します。「o+」は「o」が1回以上連続する部分にマッチし、「good」になります。
  4. 中括弧「{n}」で正確な回数
    =REGEXREPLACE(A1, "o{3}", "a") と入力します。「o{3}」は「o」がちょうど3回続く部分にマッチし、「goad」になります。

グループ化と後方参照

  1. 例題を準備する
    セルA1に「2023-12-25」と入力します。
  2. グループ化で日付を入れ替える
    セルB1に =REGEXREPLACE(A1, "(\d{4})-(\d{2})-(\d{2})", "$2/$3/$1") と入力します。括弧でグループ化し、$1,$2,$3で参照します。結果は「12/25/2023」になります。

ADVERTISEMENT

REGEXREPLACEを使う際の注意点とよくあるエラー

正規表現が予期せぬ動作をする場合の確認ポイント

正規表現は大文字と小文字を区別します。大文字小文字を意識せずにマッチさせたい場合は、関数の代わりにREGEXREPLACEでは直接対応できませんが、事前にLOWER関数やUPPER関数でテキストを変換してから使う方法があります。また、メタ文字を通常の文字として扱いたい場合はバックスラッシュでエスケープします。たとえばピリオド「.」をリテラルとして扱うには「\.」と書きます。

#N/Aエラーが発生する原因と対処法

#N/Aエラーは、正規表現の構文が無効な場合に発生します。たとえば閉じ括弧がない、文字クラス内で「[」が閉じられていない、不正な数量子があるなどです。エラーが出た場合は、まずパターンを単純にして一つずつ確認しましょう。また、置換文字列で$1などの後方参照を使う場合、正規表現内で正しくグループ化されているか確認します。

置換結果が空文字になる場合の対応

置換文字列を「””」と空文字にすると、マッチした部分を削除できます。ただし、正規表現が意図せず広範囲にマッチしていないか確認してください。たとえば「.*」は任意の文字の0回以上の繰り返しなので、文字列全体にマッチしてすべて削除される可能性があります。

REGEXREPLACEと他の置換関数の比較

関数 用途 特徴
REGEXREPLACE 正規表現を使った高度な置換 パターンマッチが柔軟、後方参照可能、大文字小文字区別 =REGEXREPLACE(A1,”\d+”,”数字”)
SUBSTITUTE 単純な置換 指定した文字列をすべて置換、大文字小文字区別なし、正規表現不可 =SUBSTITUTE(A1,”old”,”new”)
REPLACE 文字位置指定の置換 開始位置と文字数を指定、正規表現不可 =REPLACE(A1,1,3,”xxx”)

まとめ

この記事では、REGEXREPLACE関数を使った正規表現置換の基本的な使い方から、具体的なパターンの書き方までを解説しました。正規表現を活用することで、従来の置換関数では難しかった複雑な文字列処理を自動化できます。最初はパターンを少しずつ試しながら、慣れていくことをおすすめします。特に、電話番号のハイフン除去やメールアドレスのドメイン抽出など、日常業務で頻繁に登場するパターンを練習に使うと効果的です。次のステップとして、REGEXEXTRACT関数やREGEXMATCH関数と組み合わせることで、さらに高度なデータ整形が可能になりますので、ぜひチャレンジしてみてください。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。