GoogleスプレッドシートのREGEXEXTRACT関数を使って、テキストから正規表現と一致する部分を抽出する方法をご紹介します。最後によく使う正規表現の一覧表も載せているので、ぜひ参考にしてみてください。
アドレスを抽出する
REGEXEXTRACT関数は、正規表現と最初に一致する部分文字列を抽出します。
「.」は任意の1文字、「*」は直前の文字の0回以上の繰り返しです。
つまり「.*」は0文字以上の任意の文字列で、REGEXEXTRACT(A2,”(.*)@”) なら「~~~@」の パターンと最初に一致する @ より前の部分を抽出します。
REGEXEXTRACT関数の構成要素:(テキスト, 正規表現)
例えば REGEXEXTRACT(A2,”@(.*)”) なら、@より後ろの部分を抽出します。
括弧「()」はその部分だけ抽出したり、複数の結果を抽出するのに使用します。仮に「@.*」とすると、@を含めた文字列を返します。
都道府県と市区町村を抽出する
REGEXEXTRACT(A2,”..+?[都道府県]”) は、住所から都道府県名を抽出します。
「+?」は直前の文字の1回以上の繰り返しで、「[]」は角括弧内のいずれか1文字です。
つまり「..+?[都道府県]」は直前が2文字以上の任意の文字列で、「都道府県」のいずれかで終わるパターンと最初に一致する部分になります。
直前を2文字に指定しているため、「京都」にはなりません。
「+」と「+?」はどちらも直前の文字の1回以上の繰り返しですが、「+」は一致するパターンをなるべく長く、「+?」は一致するパターンをなるべく短く抽出します。
例えば「京都府京都」も、直前が2文字以上で「都」で終わるパターンに一致します。
このとき「+」なら最長の「京都府京都市」を、「+?」は最短の「京都府」を抽出します。
REGEXEXTRACT(A2,”(..+?[都道府県])(.+[市区町村])(.*)”) は、住所から都道府県、市区町村、それ以下を抽出します。
「.+」は1文字以上の任意の文字列の最長一致です。
そのため、四日市市 や 京都市西京区 の途中に出現する[市区町村]はスルーします。
このようにキャプチャ グループ「()」を使って、複数の結果を抽出できます。
電話番号を抽出する
REGEXEXTRACT(A2,”(\d+)d-(\d+)-(\d+)”) は、電話番号から数字を抽出します。
「\d」は半角数字なので、「\d+」は1文字以上の半角数字です。このように桁数に関係なく、数字を取り出すことができます。
「\w」は半角英数字とアンダースコアです。
例のように数字や単語を抽出できます。
正規表現の抜粋一覧
. | 任意の1文字 |
[xyz] | []内のいずれかの1文字(-で範囲を指定) |
[^xyz] | []内の文字以外の1文字(-で範囲を指定) |
\d | 半角数字(==[0-9]) |
\D | 半角数字以外(== [^0-9]) |
x|y | x または y のいずれかの文字列 |
.* | 0文字以上の任意の文字列(最長一致) |
.+ | 1文字以上の任意の文字列(最長一致) |
.*? | 0文字以上の任意の文字列(最短一致) |
.+? | 1文字以上の任意の文字列(最短一致) |
^ | テキストの先頭(^.. なら先頭から2文字) |
$ | テキストの末尾(..$ なら末尾から2文字) |
\s | 空白文字(半角スペース、改行) |
\S | 空白文字(半角スペース、改行)以外 |
\w | 半角英数字とアンダースコア(== [0-9A-Za-z_]) |
\W | 半角英数字とアンダースコア以外(== [^0-9A-Za-z_]) |
(…) | キャプチャグループ |
\ | 直後の正規表現の記号を文字として検索する(\\ なら \ を検索) |