
この記事では、GoogleスプレッドシートのREGEXEXTRACT関数を使って、テキストから特定の文字列を抽出する方法をご紹介します。特定の文字より前を抽出する方法や、特定の文字以降を抽出する方法についても解説しているので、ぜひ参考にしてみてください。
REGEXEXTRACT関数の使い方
REGEXEXTRACT関数は、正規表現と最初に一致する部分文字列を抽出します。
正規表現とは、あいまいな文字列を検索するための手法の 1 つで、メタキャラクタ(メタ文字)という記号を組み合わせて、文字列のパターンを表現します。
REGEXEXTRACT関数の引数:(テキスト, 正規表現)
特定の文字より前を抽出する方法

特定の文字より前の部分を抽出するには、任意の文字の 0 回以上の繰り返しを表す .*
を使用し、特定の文字をその後に記述します。このとき抽出したい部分を キャプチャグループ ()
で囲むのがポイントです。
例えば、メールアドレスから「@」より前の部分を抽出する場合、REGEXEXTRACT関数は以下のようになります。
=REGEXEXTRACT(メールアドレスが入力されたセル, "(.*)@")
. | 任意の1文字 |
* | 直前のパターンの0回以上の繰り返し(最長一致) |
.* | 0文字以上の任意の文字列(最長一致) |
( ) | キャプチャグループ |

この数式を適用すると、以下の結果が得られます。
apple@gmail
→ apple
orange@gmail
→ orange
banana@gmail
→ banana
このように、文字数に関わらず「@」マークより前の部分だけを抽出できます。

特定の文字が複数ある場合は、文字クラス[]
を使います。
例えば都道府県(都、道、府、県)のいずれかの文字より前の部分を抽出する場合、REGEXEXTRACT関数は以下のようになります。
=REGEXEXTRACT(住所が入力されたセル,"..+?[都道府県]")
. | 任意の1文字 |
+ | 直前のパターンの1回以上の繰り返し(最長一致) |
+? | 直前のパターンの1回以上の繰り返し(最短一致) |
..+? | 2文字以上の任意の文字列(最短一致) |
[ ] | [ ] 内のいずれかの1文字 |

この数式を適用すると、例えば以下のような結果が得られます。
京都府京都市若宮町1-2
→京都府
東京都八王子市暁町3-4-5
→東京都
鹿児島県霧島市国分中央6-7
→鹿児島県
特定の文字(都、道、府、県)を含めて抽出する場合、キャプチャグループ ()
は不要です。
特定の文字以降を抽出する方法

特定の文字以降の部分を抽出するには、任意の文字の 0 回以上の繰り返しを表す .*
を使用し、特定の文字をその前に記述します。このとき抽出したい部分を キャプチャグループ ()
で囲むのがポイントです。
例えば、メールアドレスから「@」より後ろの部分を抽出する場合、REGEXEXTRACT関数は以下のようになります。
=REGEXEXTRACT(メールアドレスが入力されたセル, "@(.*)")
. | 任意の1文字 |
* | 直前のパターンの0回以上の繰り返し(最長一致) |
.* | 0文字以上の任意の文字列(最長一致) |
( ) | キャプチャグループ |

この数式を適用すると、以下の結果が得られます。
apple@gmail
→ gmail
orange@gmail
→ gmail
banana@gmail
→ gmail
このように、文字数に関わらず「@」マークより後ろの部分だけを抽出できます。

特定の文字が複数ある場合は、文字クラス[]
を使います。
例えば都道府県(都、道、府、県)のいずれかの文字より後ろの部分を抽出する場合、REGEXEXTRACT関数は以下のようになります。
=REGEXEXTRACT(住所が入力されたセル, "..+?[都道府県](.*)")
. | 任意の1文字 |
+ | 直前のパターンの1回以上の繰り返し(最長一致) |
+? | 直前のパターンの1回以上の繰り返し(最短一致) |
..+? | 2文字以上の任意の文字列(最短一致) |
[ ] | [ ] 内のいずれかの1文字 |
( ) | キャプチャグループ |

この数式を適用すると、例えば以下のような結果が得られます。
京都府京都市若宮町1-2
→若宮町1-2
東京都八王子市暁町3-4-5
→八王子市暁町3-4-5
鹿児島県霧島市国分中央6-7
→霧島市国分中央6-7
キャプチャグループ ()
を使用するとこで、特定の文字より後ろの部分だけを抽出できます。
特定の文字列を抽出する方法

特定の文字列そのものを抽出したい場合は、抽出したい文字列を ()
(キャプチャグループ)内に直接記述します。
例えば、テキストのランダムな位置に含まれる「フルーツ」という文字列を抽出する場合、REGEXEXTRACT関数は以下のようになります。
=REGEXEXTRACT(テキストが入力されたセル, "(フルーツ)")
( ) | キャプチャグループ |

この数式を適用すると、例えば以下のような結果が得られます。
青森フルーツりんご
→フルーツ
みかん和歌山フルーツ
→フルーツ
フルーツもも岡山
→フルーツ
()
(キャプチャグループ)で囲むことで、指定した「特定の文字列」だけを抽出できます。

特定の文字が複数ある場合は、OR |
を使います。抽出したい複数の文字列を |
で区切り、それらを ()
(キャプチャグループ)で囲みます。
例えばテキストのランダムな位置に含まれる「フルーツ」または「ヤサイ」という文字列を抽出する場合、REGEXEXTRACT関数は以下のようになります。
=REGEXEXTRACT(テキストが入力されたセル, "(フルーツ|ヤサイ)")
( ) | キャプチャグループ |
| | OR(または) |
この数式を使うと、例えば以下の結果が得られます。
青森フルーツりんご
→フルーツ
とれたてヤサイ詰め合わせ
→ヤサイ
フルーツとお花のセット
→フルーツ
このように、()
と |
を組み合わせることで、指定した複数の文字列のいずれかを抽出できます。
特定の文字から特定の文字まで抽出する方法

特定の文字と特定の文字の間の部分を抽出したい場合、 (.*)
(キャプチャグループ)の前後に特定の文字を記述します。
例えば、ハイフン -
からハイフン -
までの文字列を抽出する場合、REGEXEXTRACT関数は以下のようになります。
=REGEXEXTRACT(テキストが入力されたセル, "-(.*)-")
. | 任意の1文字 |
* | 直前のパターンの0回以上の繰り返し(最長一致) |
.* | 0文字以上の任意の文字列(最長一致) |
( ) | キャプチャグループ |