【Googleスプレッドシート】REGEXEXTRACTで文字列からパターン抽出!正規表現の基本

【Googleスプレッドシート】REGEXEXTRACTで文字列からパターン抽出!正規表現の基本
🛡️ 超解決

スプレッドシートで文字列から特定のパターンを抽出したい場面は多くあります。例えば、セル内に含まれる電話番号やメールアドレスだけを取り出したい場合です。そんなときに便利なのがREGEXEXTRACT関数です。この関数と正規表現を組み合わせれば、複雑な文字列の中から必要な情報だけを簡単に抽出できます。この記事では、REGEXEXTRACTの基本的な使い方からよく使う正規表現パターンまでを解説します。

【要点】REGEXEXTRACTで文字列からパターン抽出する方法

  • =REGEXEXTRACT(テキスト, 正規表現): 第一引数に抽出元の文字列、第二引数にパターンを指定します。一致した部分を返します。
  • 正規表現の基本メタ文字: 「.」(任意の1文字)、「*」(0回以上の繰り返し)、「+」(1回以上)、「[abc]」(文字クラス)、「\d」(数字)などを押さえましょう。
  • よく使うパターン例: 電話番号「\d{2,4}-\d{2,4}-\d{4}」、メールアドレス「[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}」など。

ADVERTISEMENT

REGEXEXTRACT関数の基本と正規表現の概要

REGEXEXTRACT関数は、文字列から正規表現パターンに一致する部分を抽出する関数です。構文は「=REGEXEXTRACT(テキスト, 正規表現)」で、第一引数に対象の文字列、第二引数に正規表現パターンを文字列として指定します。正規表現とは、文字列のパターンを記述するための特殊な記号の組み合わせです。例えば「\d」は数字を表し、「+」は直前の文字が1回以上続くことを表します。これらを組み合わせることで、柔軟な文字列抽出が可能になります。

REGEXEXTRACTで文字列を抽出する具体的な手順

基本的な使い方(直接文字列を指定)

  1. セルを選択して関数を入力します
    抽出結果を表示したいセルをクリックし、「=REGEXEXTRACT(」と入力します。
  2. 第一引数に文字列を指定します
    直接文字列を指定する場合は、ダブルクォーテーションで囲みます。例:「”住所: 東京都新宿区”」
  3. 第二引数に正規表現パターンを指定します
    抽出したい部分を囲むパターンを書きます。例:「”\\d{3}-\\d{4}”」で郵便番号を抽出。
  4. Enterキーで確定します
    パターンに一致する最初の部分が返ります。一致しない場合は#N/Aエラーになります。

セル参照を使った抽出

  1. 抽出元のセルを準備します
    A1セルに「お問い合わせ: info@example.com」と入力します。
  2. REGEXEXTRACT関数を入力します
    「=REGEXEXTRACT(A1, “[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}”)」と記述します。
  3. 実行結果を確認します
    「info@example.com」と抽出されます。

メタ文字を使ったパターン例

  1. 数字のみを抽出する場合
    「=REGEXEXTRACT(A1, “\\d+”)」で連続する数字を抽出します。A1が「注文番号: 12345」なら「12345」が返ります。
  2. アルファベットのみを抽出する場合
    「=REGEXEXTRACT(A1, “[a-zA-Z]+”)」で英字の連続を取得します。
  3. 特定の文字列パターンを抽出する場合
    「=REGEXEXTRACT(A1, “https?://[^\\s]+”)」でURLを抽出します。

グループ化とキャプチャ

REGEXEXTRACTでは、パターン内に丸括弧を使うと、その部分をグループとしてキャプチャできます。キャプチャを使うと複数の部分を一度に抽出するのに便利です。ただし、REGEXEXTRACTは最初のキャプチャグループのみを返します。複数のグループを抽出するにはREGEXEXTRACTの別の書式やREGEXREPLACEと組み合わせる必要があります。

  1. 日付を年・月・日に分割する場合
    「=REGEXEXTRACT(“2023/12/25”, “(\\d{4})/(\\d{2})/(\\d{2})”)」は「2023」のみ返します。すべてのグループを得るには配列数式や別の方法を検討します。
  2. 名前とメールアドレスを別々に抽出
    正規表現を工夫して、一つのセルで目的の部分をキャプチャします。

REGEXEXTRACT使用時の注意点と失敗例

#N/Aエラーが出るとき

正規表現パターンが文字列内で一致しない場合、#N/Aエラーが返ります。原因として、パターンの誤りや大文字小文字の違いが考えられます。大文字小文字を区別しない場合は、テキストをLOWER関数などで統一してから抽出します。

正規表現の記号のエスケープ忘れ

正規表現では「.」「*」「+」「?」「[」「]」「(」「)」「{」「}」「^」「$」「|」「\」などの記号が特殊な意味を持ちます。これらを通常の文字として扱うには、バックスラッシュ(\)でエスケープします。例えば「\.」でピリオドを意味します。エスケープを忘れると意図しない抽出結果になります。

抽出結果が期待と違う場合(最長一致と最短一致)

デフォルトでは「*」や「+」は最長一致(できるだけ長く一致)です。最短一致にしたい場合は「*?」や「+?」とします。例えばHTMLタグを抽出するとき、「<.*>」は最長一致でタグ全体を取得しますが、「<.*?>」は一つのタグだけを抽出します。

ADVERTISEMENT

よく使う正規表現パターンの比較表

抽出対象 正規表現パターン 説明
郵便番号 \d{3}-\d{4} 3桁ハイフン4桁の形式
電話番号 \d{2,4}-\d{2,4}-\d{4} 市外番号含む一般電話番号
メールアドレス [a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,} 基本的なメール形式
URL https?://[^\s]+ httpまたはhttpsから空白まで
日付(YYYY/MM/DD) \d{4}/\d{2}/\d{2} スラッシュ区切りの日付
15桁の数字(マイナンバー) \d{15} 連続する15桁の数字

まとめ

この記事ではREGEXEXTRACT関数の基本的な使い方と正規表現のパターン例を紹介しました。これで電話番号やメールアドレス、特定フォーマットのデータを簡単に抽出できるようになります。次はREGEXREPLACEやREGEXMATCHなど他の正規表現関数にも挑戦してみてください。正規表現の知識を広げると、スプレッドシートでのデータ整形がより効率的になります。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

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