【Googleスプレッドシート】正規表現を使った置換と抽出

Googleスプレッドシートで、正規表現を活用して文字列を置換する方法をご紹介します。REGEXEXTRACT関数と正規表現を活用して、文字列の一部を抽出する方法についても解説しているので、ぜひ参考にしてみてください。

スポンサーリンク

正規表現とは

あいまいな文字列を検索するための手法の 1 つです。

メタキャラクタ(メタ文字)という記号を使って、文字列のパターンを表現します。

【Googleスプレッドシート】正規表現を使った置換と抽出

. は、任意の1文字を表します。

..リンゴ なら、リンゴの直前に2文字付くテキストが該当します。

【Googleスプレッドシート】正規表現を使った置換と抽出

.* は、0文字以上の任意の文字列の最長一致表します。

(.*)リンゴ なら、リンゴの直前が0文字以上のテキストが該当します。

【Googleスプレッドシート】正規表現を使った置換と抽出

.+ は、1文字以上の任意の文字列の最長一致を表します。

(.+)リンゴ なら、リンゴの直前が1文字以上のテキストが該当します。

【Googleスプレッドシート】正規表現を使った置換と抽出

[ ] は、「または」を表します。

..[都道府県] なら、都道府県のいずれかで終わり、その直前に2文字付くテキストが該当します。

【Googleスプレッドシート】正規表現を使った置換と抽出

.+? は、1文字以上の任意の文字列に最短で一致することを表します。

したがって、..+?[都道府県] は、都道府県名のいずれかで終わり、その直前に2文字が付くテキストを、可能な限り短い形で検索します。

一方 .+ は最長一致となるため、正規表現に一致するテキストを、最も長い形で検索します。

例えば、「京都府京都市」という文字列に対して、 ..+[都道府県] を用いると「京都府京都」が、..+?[都道府県] を用いると「京都府」が検索結果として得られます。

スポンサーリンク

正規表現を使った置換

【Googleスプレッドシート】正規表現を使った置換と抽出

「検索と置換」を開き、「正規表現を使用した検索」にチェックを入れます。

検索欄に、 @(.*) を入力します。

.* は 0 文字以上の任意の文字列の最長一致です。

検索と置換のショートカットキー:[Ctrl]+[H]

【Googleスプレッドシート】正規表現を使った置換と抽出

メールアドレスの「@」より後ろの文字列を空白に置換します。

【Googleスプレッドシート】正規表現を使った置換と抽出

検索欄に \D を入力します。

\D は半角数字以外を表します。

【Googleスプレッドシート】正規表現を使った置換と抽出

電話番号の「ハイフン」を空白に置換します。

【Googleスプレッドシート】正規表現を使った置換と抽出

検索欄に (\n)+ を入力します。

\n は改行、+ は繰り返しを表します。

【Googleスプレッドシート】正規表現を使った置換と抽出

1つ以上の「改行」を空白に置換します。

スポンサーリンク

正規表現を使った抽出

【Googleスプレッドシート】正規表現を使った置換と抽出

REGEXEXTRACT関数は、正規表現と最初に一致する部分文字列を抽出します。

例:=REGEXEXTRACT(A1,”(.*)@”)

.* は 0 文字以上の任意の文字列の最長一致を表します。

(.*)@ は「@」より前の全ての文字列です。

REGEXEXTRACT関数の引数:(テキスト, 正規表現)

【Googleスプレッドシート】正規表現を使った置換と抽出

メールアドレスの「@」より前の全ての文字列を抽出します。

( ) はその部分だけ抽出したり、複数の結果を抽出するのに使用します。

.*@ の場合、@を含めた「apple@」を返します。

【Googleスプレッドシート】正規表現を使った置換と抽出

例:=REGEXEXTRACT(A1,”@(.*)”)

@(.*) は @より後ろの全ての文字列です。

メールアドレスの「@」より後ろの全ての文字列を抽出します。

【Googleスプレッドシート】正規表現を使った置換と抽出

+? は直前の文字の 1 回以上の繰り返し、[ ] は角括弧内のいずれか 1 文字を表します。

..+?[都道府県] は直前が2文字以上の任意の文字列です。

例:=REGEXEXTRACT(A1,”..+?[都道府県]”)

【Googleスプレッドシート】正規表現を使った置換と抽出

「都道府県」のいずれかで終わるパターンと最初に一致する部分を抽出します。

+ +? はどちらも直前の文字の1回以上の繰り返しですが、+ は一致するパターンをなるべく長く、+? は一致するパターンをなるべく短く抽出します。

京都府京都市の場合 + なら「京都府京都市」、+? なら「京都府」を抽出します。

【Googleスプレッドシート】正規表現を使った置換と抽出

\d は半角数字、\d+ は1文字以上の半角数字を表します。

例=REGEXEXTRACT(A1,”(\d+)-(\d+)-(\d+)”)

【Googleスプレッドシート】正規表現を使った置換と抽出

電話番号からハイフン抜きの数字を抽出します。

スポンサーリンク

正規表現の抜粋一覧

.任意の1文字
[xyz][]内のいずれかの1文字(-で範囲を指定)
[^xyz][]内の文字以外の1文字(-で範囲を指定)
\d半角数字(==[0-9])
\D半角数字以外(== [^0-9])
x|yx または y のいずれかの文字列
.*0文字以上の任意の文字列(最長一致)
.+1文字以上の任意の文字列(最長一致)
.*?0文字以上の任意の文字列(最短一致)
.+?1文字以上の任意の文字列(最短一致)
^テキストの先頭(^.. なら先頭から2文字)
$テキストの末尾(..$ なら末尾から2文字)
\s空白文字(半角スペース、改行)
\S空白文字(半角スペース、改行)以外
\w半角英数字とアンダースコア(== [0-9A-Za-z_])
\W半角英数字とアンダースコア以外(== [^0-9A-Za-z_])
(…)キャプチャグループ
\直後の正規表現の記号を文字として検索する(\\ なら \ を検索)
タイトルとURLをコピーしました