- 作成日 : 2025年12月2日
スプレッドシートで正規表現を活用する方法とは?基本パターンと実用的な関数の使い方完全ガイド
Googleスプレッドシート(Google Sheets)では、正規表現(Regular Expression、regex)を使うことで、文字列の検索・抽出・置換といった処理を効率的に行えます。
電話番号やメールアドレスの形式統一、特定パターンのデータ抽出など、手作業では時間がかかる作業も自動化できるのが特徴です。
本記事では、スプレッドシートで利用できる正規表現の基本構文から、REGEXMATCH・REGEXEXTRACT・REGEXREPLACE関数の使い方までをわかりやすく整理。実務で役立つ具体的な応用例も交えて、正規表現を日常業務で活用するためのポイントを解説します。
目次
スプレッドシートにおける正規表現の基礎知識
正規表現とは、文字列のパターンを指定して検索や抽出、置換を行うための表記方法です。
Googleスプレッドシートでは、主に REGEXMATCH、REGEXEXTRACT、REGEXREPLACE といった「REGEX系関数」と組み合わせて使用します。
通常の検索機能では「完全一致」や「部分一致」に限られますが、正規表現を使うと「数字が3桁続く」「@を含むメールアドレス形式」など、より柔軟な条件で文字列を扱うことができます。
たとえば、電話番号が「090-1234-5678」「09012345678」「090(1234)5678」など異なる形式で入力されていても、正規表現を使えば1つのパターンでまとめて処理できます。
また、大量のテキストから特定のパターンを抽出する作業や、形式の異なるデータを統一する作業にも適しています。
スプレッドシートで正規表現を扱う際は、基本的に次の2つの考え方を押さえると分かりやすいでしょう。
- パターンの定義:検索や抽出の対象となる条件を設定する
- 操作の実行:定義したパターンに対して「一致の判定」「抽出」「置換」を行う
この2つを理解しておくと、さまざまな文字列処理を効率的に行えるようになります。
正規表現が有効なケース
正規表現は、データの形式がばらついている場合や、入力内容の確認・抽出を自動化したい場面で特に役立ちます。
たとえば、全角・半角の混在や区切り文字の不統一、余分なスペースなどを一括で修正したいとき、正規表現を使えば簡潔に処理できます。
また、データ検証にも活用でき、メールアドレス・URL・郵便番号などが正しい形式で入力されているかをすぐに確認できます。
さらに、情報抽出やデータクレンジングの場面でも有効です。電話番号や金額、日付など特定のパターンを抽出したり、不要な記号やスペースを取り除いたりといった処理を効率的に行えます。
たとえば、商品コードに不要な文字が混ざっている、住所データに不規則な空白が含まれている場合でも、正規表現を使うことで短時間で整えることが可能です。
スプレッドシートでよく使う正規表現パターン
スプレッドシートで頻繁に使用される正規表現の基本パターンを理解することで、日常的なデータ処理の大部分に対応でき、これらを組み合わせることでより複雑な処理も実現できます。 ここでは、実務で特に利用頻度の高いパターンを詳しく解説します。
文字クラスと数量指定子
基本的なパターンは文字クラスです。dは任意の数字(0-9)、wは英数字とアンダースコア、sは空白文字(スペース、タブ、改行)を表します。これらの大文字版(D、W、S)は、それぞれの否定(数字以外、英数字以外、空白以外)を意味します。
数量指定子は、文字の繰り返しを表現します。*は0回以上の繰り返し、+は1回以上の繰り返し、?は0回または1回、{n}はちょうどn回、{n,}はn回以上、{n,m}はn回以上m回以下の繰り返しを表します。例えば、d{3}は「数字がちょうど3桁」、w+は「1文字以上の英数字」を意味します。
角括弧[]を使用すると、文字の集合を定義できます。[abc]はa、b、cのいずれか1文字、[a-z]は小文字のアルファベット、[0-9]は数字を表します。[^abc]のように先頭に^を付けると、指定文字以外を意味します。
位置指定とグループ化
位置を指定するアンカーも重要です。^は文字列の先頭、$は文字列の末尾を表します。例えば、^Aは「Aで始まる」、Z$は「Zで終わる」、^A.*Z$は「Aで始まりZで終わる」を意味します。単語境界を表すbも便利で、bwordbとすると、「word」という完全な単語のみにマッチし、「wordpress」の一部にはマッチしません。
括弧()によるグループ化は、複数の文字をまとめて扱うために使用します。(abc)+は「abc」の1回以上の繰り返し、(日本|アメリカ|中国)は「日本」「アメリカ」「中国」のいずれかを表します。グループ化した部分は後で参照することもでき、REGEXEXTRACT関数で特定部分のみを抽出する際に活用されます。
実用的なパターン例
電話番号のパターン:^0d{1,4}-?d{1,4}-?d{4}$ このパターンは、0で始まり、ハイフンがあってもなくても対応できる日本の電話番号形式を表現しています。
メールアドレスのパターン:^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}$ 一般的なメールアドレス形式を検証するパターンです。
郵便番号のパターン:^d{3}-?d{4}$ 日本の郵便番号(ハイフンあり・なし両対応)を表現しています。
日付のパターン:^d{4}[/-]d{1,2}[/-]d{1,2}$ YYYY/MM/DDまたはYYYY-MM-DD形式の日付を表現しています。
REGEXMATCH関数でパターンの一致を判定
REGEXMATCH関数は、指定したテキストが正規表現パターンに一致するかを判定し、TRUE/FALSEを返す関数で、データ検証や条件分岐の基礎となる重要な機能です。 この関数により、大量のデータから特定のパターンを持つデータを効率的に識別できます。
REGEXMATCH関数の基本構文
=REGEXMATCH(テキスト, 正規表現)
この関数は、第1引数のテキストが第2引数の正規表現パターンに部分的にでも一致すればTRUE、一致しなければFALSEを返します。例えば、=REGEXMATCH(A1,”d{3}-d{4}”)は、A1セルに郵便番号形式の文字列が含まれているかを判定します。
実践的な使用例として、メールアドレスの形式チェックがあります。
=REGEXMATCH(A1,”^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}$”)
この数式により、A1セルの内容が正しいメールアドレス形式であるかを検証できます。
条件付き書式との組み合わせ
REGEXMATCH関数は条件付き書式と組み合わせることで、視覚的なデータ検証が可能になります。
例えば、電話番号が正しい形式でない場合に赤色でハイライトする設定:
- 対象範囲を選択
- 「表示形式」→「条件付き書式」を選択
- カスタム数式として=NOT(REGEXMATCH(A1,”^0d{9,10}$”))を入力
- 書式設定で背景色を赤に設定
これにより、不正な形式の電話番号が自動的に赤色で表示され、入力ミスを即座に発見できます。
フィルタ機能での活用
REGEXMATCH関数をフィルタ条件として使用することで、複雑な抽出条件を設定できます。
例えば、特定のドメインのメールアドレスのみを抽出する場合:
=FILTER(A:B,REGEXMATCH(B:B,”@example.com$”))
この数式は、B列のメールアドレスが「@example.com」で終わる行のみを抽出します。複数の条件を組み合わせることも可能で、AND関数やOR関数と併用することで、より精密なフィルタリングが実現できます。
REGEXEXTRACT関数で必要な部分を抽出
REGEXEXTRACT関数は、テキストから正規表現パターンに一致する部分を抽出する関数で、長い文字列から必要な情報のみを取り出す際に非常に有効です。 この関数により、構造化されていないテキストデータから、体系的な情報を効率的に抽出できます。
REGEXEXTRACT関数の基本構文と使い方
=REGEXEXTRACT(テキスト, 正規表現)
この関数は、パターンに最初に一致した部分を返します。グループ化(括弧)を使用すると、特定の部分のみを抽出できます。
例えば、「2024年3月15日」から年月日を個別に抽出する場合:
=REGEXEXTRACT(A1,”(d{4})年(d{1,2})月(d{1,2})日”)
この数式では、先頭のキャプチャグループ (d{4}) にマッチした部分(西暦4桁)だけが返されます。
年・月・日をそれぞれ取得したい場合は、別々の REGEXEXTRACT を使うか、パターンを変えて抽出します。
例えば:
年:
=REGEXEXTRACT(A1,”(d{4})年”)
月:
=REGEXEXTRACT(A1,”年(d{1,2})月”)
日:
=REGEXEXTRACT(A1,”月(d{1,2})日”)
このように、1つのREGEXEXTRACTにつき1つの項目を取り出すイメージで使うと、仕様どおりの結果が得られます。
URLからドメイン名を抽出
WebサイトのURLから、ドメイン名やパラメータを抽出する実用例:
=REGEXEXTRACT(A1,”https?://([^/]+)”)
この数式は、URLからドメイン名部分のみを抽出します。
例えば、「https://www.example.com/page」から「www.example.com」を取り出します。
さらに、www. を除いたホスト名だけを取得したい場合の例:
=REGEXEXTRACT(A1,”https?://(?:www.)?([^/]+)”)
この数式は、
https://www.example.com/page → example.com
のように、www. が付いている場合はそれを取り除き、残りのホスト部分を抽出します。
ただし、https://app.example.com/page のように www 以外のサブドメインが付いている場合は、app.example.com がそのまま取得されます。
「すべてのサブドメインを除いた純粋なメインドメイン(example.com だけ)を抽出したい」場合は、さらに SPLIT や REGEXREPLACE を組み合わせるなど、別途ロジックを追加する必要があります。
商品コードや注文番号の抽出
混在したテキストから特定形式のコードを抽出する場合の例:
=REGEXEXTRACT(A1,”[A-Z]{2}-d{6}”)
この数式は、「AB-123456」のような形式(大文字2文字-数字6桁)のコードを抽出します。複数のコードが含まれる場合は、最初に見つかったものが返されます。
住所から郵便番号を抽出する例:
=REGEXEXTRACT(A1,”〒?(d{3}-?d{4})”)
この数式は、「〒」記号の有無、ハイフンの有無に関わらず郵便番号を抽出します。
REGEXREPLACE関数でパターンを置換
REGEXREPLACE関数は、正規表現パターンに一致する部分を別の文字列に置換する関数で、データのクレンジングや形式統一において最も強力なツールの一つです。この関数により、複雑な置換ルールも簡潔に記述でき、大量のデータ処理を効率化できます。
REGEXREPLACE関数の基本構文
=REGEXREPLACE(テキスト, 正規表現, 置換文字列)
この関数は、テキスト内のパターンに一致するすべての部分を置換文字列で置き換えます。
全角数字を半角数字に変換したい場合の例
REGEXREPLACE 1本でスマートに書くのは難しいため、ここでは動作が分かりやすく、確実に変換できる SUBSTITUTE を使った例に差し替えます。
例:A1 の全角数字をすべて半角数字に置き換える数式
=SUBSTITUTE(
SUBSTITUTE(
SUBSTITUTE(
SUBSTITUTE(
SUBSTITUTE(
SUBSTITUTE(
SUBSTITUTE(
SUBSTITUTE(
SUBSTITUTE(
SUBSTITUTE(A1,
“0”,”0″),
“1”,”1″),
“2”,”2″),
“3”,”3″),
“4”,”4″),
“5”,”5″),
“6”,”6″),
“7”,”7″),
“8”,”8″),
“9”,”9″))
この数式なら、
- 「12345」 → 「12345」
- 「売上:321,098円」 → 「売上:321,098円」
のように、複数の数字が混在していても1桁ごとに正しく全角→半角変換されます。
不要な文字の削除
データクレンジングでよく使用される、不要な文字を削除するパターン:
余分なスペースの削除:
=REGEXREPLACE(A1,”s+”,” “)
この数式は、連続するスペース(全角・半角含む)を1つの半角スペースに置換します。
特殊文字の削除:
=REGEXREPLACE(A1,”[^ws]”,””)
英数字とスペース以外のすべての文字を削除します。
HTMLタグの削除:
=REGEXREPLACE(A1,”<[^>]+>”,””)
HTMLタグをすべて削除して、テキストのみを残します。
後方参照を使った高度な置換
後方参照($1, $2など)を使用すると、マッチした部分を再利用できます。
日付形式の変換(YYYY/MM/DD → DD-MM-YYYY):
=REGEXREPLACE(A1,”(d{4})[/-](d{2})[/-](d{2})”,”$3-$2-$1″)
氏名の順序変換(姓名 → 名, 姓):
=REGEXREPLACE(A1,”^(S+)s+(S+)$”,”$2, $1″)
金額にカンマを追加:
=REGEXREPLACE(TEXT(A1,”0″),”(d)(?=(d{3})+$)”,”$1,”)
実践的な活用例と応用テクニック
正規表現関数を組み合わせることで、より複雑なデータ処理を自動化でき、実務における様々な課題を効率的に解決できます。 ここでは、実際の業務で頻繁に遭遇するケースとその解決方法を紹介します。
データ検証システムの構築
複数の検証条件を組み合わせた包括的なデータ検証システムの例:
=IF(AND(
REGEXMATCH(A2,”^d{3}-?d{4}$”), // 郵便番号
REGEXMATCH(B2,”^0d{9,10}$”), // 電話番号
REGEXMATCH(C2,”@.*.”) // メールアドレス
),”OK”,”要確認”)
この数式により、複数項目の形式を一度にチェックし、すべて正しい場合のみ「OK」を表示します。
ログファイルの解析
アクセスログやエラーログから必要な情報を抽出する例:
IPアドレスの抽出:
=REGEXEXTRACT(A1,”b(?:[0-9]{1,3}.){3}[0-9]{1,3}b”)
タイムスタンプの抽出:
=REGEXEXTRACT(A1,”d{4}-d{2}-d{2}s+d{2}:d{2}:d{2}”)
エラーコードの集計:
エラーコードの集計例は、SUMPRODUCT を使って「マッチした行の数だけ 1 を足し込む」形にするとシンプルです。
=SUMPRODUCT(–REGEXMATCH(A:A,”ERRORs+d{3}”))
- REGEXMATCH(A:A,”ERRORs+d{3}”)
→ 各行について「ERROR + 空白 + 3桁の数字」にマッチするかを TRUE/FALSE で返す - –(二重の単項マイナス)
→ TRUE を 1、FALSE を 0 に変換 - SUMPRODUCT(…)
→ それらをすべて足し合わせて、「ERROR 123」「ERROR 404」などのエラー行の件数を返す
範囲をフル列にすると重くなる場合は、A2:A1000 のように必要な行だけに絞るとパフォーマンス面でも安全です。
住所データの標準化
不規則な住所表記を統一する処理:
全角数字を半角に変換する処理は、別途 SUBSTITUTE などで行う前提にして、住所の標準化例は「実際に動く式」にしておくと安全です。
例:番地の「-/-/の」を統一し、余分なスペースを削除するパターン
=REGEXREPLACE(
REGEXREPLACE(A1,”(d+)[--の](d+)”,”$1-$2″),
“s+”,””)
ここでは:
1つ目の REGEXREPLACE
(d+)[--の](d+) にマッチする部分(例:1-2、1-2、1の2)を $1-$2 に統一
2つ目の REGEXREPLACE
s+(連続する空白)を空文字に置き換えて、スペースを削除
全角数字→半角数字 の変換も行いたい場合は、別途
=SUBSTITUTE(
SUBSTITUTE(
SUBSTITUTE(
SUBSTITUTE(
SUBSTITUTE(
SUBSTITUTE(
SUBSTITUTE(
SUBSTITUTE(
SUBSTITUTE(
SUBSTITUTE(上記の結果,
“0”,”0″),
“1”,”1″),
“2”,”2″),
“3”,”3″),
“4”,”4″),
“5”,”5″),
“6”,”6″),
“7”,”7″),
“8”,”8″),
“9”,”9″))
のように SUBSTITUTE をネストして全角数字を半角に変えるか、その処理を別の列で行う、という形で分けて記述しておくと、読者が混乱せず安全に利用できます。
動的なデータ分類
商品名から自動的にカテゴリーを判定する例:
=IFS(
REGEXMATCH(A1,”(?i)iphone|ipad|mac”),”Apple製品”,
REGEXMATCH(A1,”(?i)windows|surface”),”Microsoft製品”,
REGEXMATCH(A1,”(?i)pixel|chrome”),”Google製品”,
TRUE,”その他”)
(?i)は大文字小文字を無視するフラグで、柔軟なマッチングが可能になります。
正規表現のデバッグとトラブルシューティング
正規表現を使用する際は、パターンの複雑さゆえにエラーが発生しやすいため、段階的なテストとデバッグが重要です。 効果的なデバッグ方法を理解することで、正確で効率的な正規表現を作成できます。
よくあるエラーとその対処法
- エスケープ忘れ:特殊文字(. * + ? など)を文字として扱いたい場合は、バックスラッシュでエスケープする必要があります。
誤:=REGEXMATCH(A1,”example.com”) 正:=REGEXMATCH(A1,”example.com”) - 欲張りマッチと最小マッチ:.*は欲張り(最長一致)、.*?は最小一致です。 例:HTMLタグ内のテキスト抽出では<.+?>を使用
- 文字クラスの誤用:角括弧内では多くの特殊文字がリテラルとして扱われます。 [.]はピリオド文字、.はエスケープされたピリオド
パフォーマンスの最適化
- 具体的なパターンを優先:d{3}は.*より高速
- 不要な後方参照を避ける:グループ化が不要な場合は(?:…)を使用
- アンカーを活用:^や$で検索範囲を限定
大量データを処理する場合の工夫:
=ARRAYFORMULA(IF(A2:A=””,””,REGEXEXTRACT(A2:A,”d+”)))
ARRAYFORMULA関数と組み合わせることで、列全体を一度に処理できます。
正規表現を活用してデータ処理をより効率的に
Googleスプレッドシートの正規表現機能を使いこなすことで、データの検証や整形、抽出といった文字列処理を簡潔に記述できるようになります。
まずは基本的なパターン(数字・文字・位置指定など)を理解し、REGEXMATCHで判定、REGEXEXTRACTで抽出、REGEXREPLACEで置換するという流れを習得するとよいでしょう。
また、複雑な表現を使う際は、少しずつテストしながらパターンを調整することが大切です。
正規表現を上手に取り入れることで、データ整理や入力チェックの作業をより正確かつ効率的に進められるようになります。
※ 掲載している情報は記事更新時点のものです。
※本サイトは、法律的またはその他のアドバイスの提供を目的としたものではありません。当社は本サイトの記載内容(テンプレートを含む)の正確性、妥当性の確保に努めておりますが、ご利用にあたっては、個別の事情を適宜専門家にご相談いただくなど、ご自身の判断でご利用ください。
関連記事
SLOPE関数の使い方:エクセルで線形回帰の傾きを計算する方法
SLOPE関数は、2つのデータセット間の線形回帰直線の傾きを計算するエクセルの統計関数です。売上高と広告費の関係分析、気温と電力消費の相関調査、生産量とコストの関係把握、時系列データのトレンド分析など、2つの変数間の関係性を数値化する様々な…
詳しくみるスプレッドシートで行の幅をそろえるには?列幅の統一から自動調整・固定まで解説
Googleスプレッドシートで行の高さや列の幅をそろえることで、データの視認性が向上し、プロフェッショナルな見栄えの表を作成できます。複数の行や列を選択して一括調整する方法や、内容に応じた自動調整機能を使えば、手作業での調整時間を大幅に削減…
詳しくみるエクセルでエンターキーを押した後の移動方向を設定する方法
エクセルを使う際、エンターキーを押した後のセルの移動方向を設定することで、作業効率が向上します。デフォルトでは、エンターキーを押すと下方向にセルが選択されますが、この設定を変更することで、左や右、上に移動させることが可能です。この記事では、…
詳しくみるエクセルのコメント機能の使い方とは?一緒に印刷するにはどうする?
エクセルのコメント機能は、データに対する補足情報や意見を追加するのに非常に便利です。これにより、他のユーザーと効率的に情報を共有し、より良いコラボレーションが可能になります。本記事では、エクセルのコメント機能の具体的な使い方と、これらのコメ…
詳しくみるVALUE関数の使い方や変換がうまくできない場合をわかりやすく解説
VALUE関数は、見た目は数字なのに、コンピュータに文字として認識されている文字列データ(例えば、日本語全角の数字など)を、計算ができる数値に変換するための便利なツールですが、実際に使用する際にはいくつかの注意点があります。データの形式や内…
詳しくみるエクセルで行や列を非表示にするには?解除の仕方やグループ化の方法まで
エクセルを使っていると、データの整理や見やすさを向上させるために行や列を非表示にすることがあります。しかし、非表示にした行や列の解除方法や、グループ化を利用して折りたたむテクニックも必要です。この記事では、エクセルで行や列を簡単に非表示にす…
詳しくみる