REGEXREPLACE関数の使い方|正規表現でまとめて置き換える

執筆者:

カテゴリ:

REGEXREPLACEは、正規表現に一致した部分を、別の文字に置き換える関数です。

SUBSTITUTE が「特定の文字」を置き換えるのに対し、REGEXREPLACEは「パターン」で置き換えます。 複数種類の文字をまとめて処理できるのが強みです。

Excelにはありません。 スプレッドシート固有の関数です。

書式

=REGEXREPLACE(文字列, 正規表現, 置換文字)

一致したすべての箇所が置き換わります。1箇所だけということはできません。

正規表現の最小限の知識

記号 意味
\d 数字1文字
\D 数字以外1文字
\s 空白1文字
. 任意の1文字
+ 直前を1回以上
* 直前を0回以上
[abc] a か b か c
[^abc] a b c 以外
^ 先頭
$ 末尾
(...) キャプチャ(後で $1 で参照)
`\ ` または

. ( ) - などを文字そのものとして扱うときは、前に \ を付けます。

不要な文字を一括削除する

REGEXREPLACEの最頻出の用途です。

ハイフン・スペースをまとめて削除

=REGEXREPLACE(A1, "[-  ]", "")

[-  ] は「ハイフン、半角スペース、全角スペースのどれか」という意味です。

SUBSTITUTE だと入れ子が3重になります。

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1, "-", ""), " ", ""), " ", "")

削除対象が3つを超えたら、REGEXREPLACEに切り替えるのが実用的な目安です。

数字以外を全部削除する

=REGEXREPLACE(A1, "\D", "")

電話番号や郵便番号から記号を除いて、数字だけにできます。

計算に使うなら VALUE で数値化してください。

=VALUE(REGEXREPLACE(A1, "\D", ""))

全角数字を含めて処理する

=VALUE(REGEXREPLACE(ASC(A1), "\D", ""))

ASC で全角を半角に変換してから処理します。

記号だけ削除して文字は残す

=REGEXREPLACE(A1, "[^\w\sぁ-んァ-ン一-龥]", "")

連続する空白を1つにまとめる

=REGEXREPLACE(A1, "\s+", " ")

改行を削除する

=REGEXREPLACE(A1, "\n", "")

CSVやWebからコピーしたデータに紛れ込む改行を除去できます。

キャプチャで並べ替える

REGEXREPLACEの最も強力な機能です。

() で囲んだ部分を、置換文字の中で $1 $2 として参照できます。

姓名を入れ替える

=REGEXREPLACE(A1, "^(\S+)\s+(\S+)$", "$2 $1")

山田 太郎太郎 山田

日付の形式を変える

=REGEXREPLACE(A1, "(\d{4})/(\d{1,2})/(\d{1,2})", "$1年$2月$3日")

2026/4/12026年4月1日

元が文字列の日付の場合に使えます。日付型なら TEXT を使ってください。

電話番号を整形する

=REGEXREPLACE(REGEXREPLACE(A1, "\D", ""), "^(\d{2,4})(\d{4})(\d{4})$", "$1-$2-$3")

内側でまず数字だけにして、外側でハイフンを入れています。

全行に適用する

ARRAYFORMULA が確実に効きます。

=ARRAYFORMULA(IF(A2:A="", "", REGEXREPLACE(A2:A, "[-  ]", "")))

データ整形を1本の数式で全行に効かせられるので、CSVの前処理に強い組み合わせです。

REGEXEXTRACT・REGEXMATCHとの使い分け

関数 用途 一致しないとき
REGEXREPLACE 置き換える 元の文字列がそのまま返る
REGEXEXTRACT 取り出す #N/A
REGEXMATCH 判定する FALSE

REGEXREPLACEは一致しなくてもエラーになりません。 元の文字列がそのまま返ります。IFERROR で包む必要がないのは、REGEXEXTRACT にはない利点です。

大文字小文字を区別しない

先頭に (?i) を付けます。

=REGEXREPLACE(A1, "(?i)tokyo", "東京")

SUBSTITUTE は大文字小文字を区別するので、区別せずに置換したいときはこちらを使ってください。

よくある問題

置き換わらない

  • – パターンが実際のデータと一致していない
  • – 全角と半角が違う(-1
  • – 特殊文字をエスケープしていない(. ( ) [ ] * + ? \

. を文字として扱いたいなら \. と書いてください。

想定以上に置き換わる

  • . を「任意の1文字」として使ってしまっている
  • + が貪欲に一致しすぎている → +? で最短一致に

結果が文字列になる

REGEXREPLACEの結果は常に文字列です。計算に使うなら VALUE で数値化してください。

#VALUE! が出る

正規表現の書き方が不正です。括弧の対応や、エスケープを確認してください。

まとめ

  • – 書式は =REGEXREPLACE(文字列, "正規表現", "置換文字")
  • 一致したすべての箇所が置き換わる
  • – 削除対象が3つを超えたら SUBSTITUTE から乗り換える
  • ()$1 で並べ替えができる(姓名の入れ替えなど)
  • 一致しなくてもエラーにならない(元の文字列が返る)
  • – 全行適用は ARRAYFORMULA で確実に効く
  • – Excelには無い

関連する関数

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です