スプレッドシートで文字列から特定のパターンを抽出したい場面は多くあります。例えば、セル内に含まれる電話番号やメールアドレスだけを取り出したい場合です。そんなときに便利なのが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で文字列を抽出する具体的な手順
基本的な使い方(直接文字列を指定)
- セルを選択して関数を入力します
抽出結果を表示したいセルをクリックし、「=REGEXEXTRACT(」と入力します。 - 第一引数に文字列を指定します
直接文字列を指定する場合は、ダブルクォーテーションで囲みます。例:「”住所: 東京都新宿区”」 - 第二引数に正規表現パターンを指定します
抽出したい部分を囲むパターンを書きます。例:「”\\d{3}-\\d{4}”」で郵便番号を抽出。 - Enterキーで確定します
パターンに一致する最初の部分が返ります。一致しない場合は#N/Aエラーになります。
セル参照を使った抽出
- 抽出元のセルを準備します
A1セルに「お問い合わせ: info@example.com」と入力します。 - REGEXEXTRACT関数を入力します
「=REGEXEXTRACT(A1, “[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}”)」と記述します。 - 実行結果を確認します
「info@example.com」と抽出されます。
メタ文字を使ったパターン例
- 数字のみを抽出する場合
「=REGEXEXTRACT(A1, “\\d+”)」で連続する数字を抽出します。A1が「注文番号: 12345」なら「12345」が返ります。 - アルファベットのみを抽出する場合
「=REGEXEXTRACT(A1, “[a-zA-Z]+”)」で英字の連続を取得します。 - 特定の文字列パターンを抽出する場合
「=REGEXEXTRACT(A1, “https?://[^\\s]+”)」でURLを抽出します。
グループ化とキャプチャ
REGEXEXTRACTでは、パターン内に丸括弧を使うと、その部分をグループとしてキャプチャできます。キャプチャを使うと複数の部分を一度に抽出するのに便利です。ただし、REGEXEXTRACTは最初のキャプチャグループのみを返します。複数のグループを抽出するにはREGEXEXTRACTの別の書式やREGEXREPLACEと組み合わせる必要があります。
- 日付を年・月・日に分割する場合
「=REGEXEXTRACT(“2023/12/25”, “(\\d{4})/(\\d{2})/(\\d{2})”)」は「2023」のみ返します。すべてのグループを得るには配列数式や別の方法を検討します。 - 名前とメールアドレスを別々に抽出
正規表現を工夫して、一つのセルで目的の部分をキャプチャします。
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
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】複合グラフで棒と折れ線を同時表示!2軸グラフの作り方
- 【Googleスプレッドシート】FILTER関数で条件に合う行だけ抽出!数式1つで動的な絞り込み
- 【Googleスプレッドシート】フィルタ表示で他の人の表示を変えずに絞り込み!共有時の使い分け
- 【Googleスプレッドシート】重複データを抽出して表示!COUNTIFと条件付き書式の併用
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】ARRAYFORMULAで列全体に数式を一括適用!セル分の入力を不要に
- 【Googleスプレッドシート】データ範囲を動的に伸縮させる!INDIRECTと参照範囲のコツ
- 【Googleスプレッドシート】共有解除と権限の取り消し!アクセスを完全に閉じる手順
