2024年5月、Excelの関数で正規表現が使えるようになりました。
本記事では、主に初心者の方向けに、Excelでの正規表現の使い方を具体例を交えて解説します。
そもそも「正規表現」ってなに!?
正規表現とは、文字列のパターンマッチング(検索、置換、抽出)に使われる表現のことです。
正規表現を用いることで、
- 郵便番号になっている部分だけ抜き出す
- 電話番号のハイフンを削除
- 文末の「〜です。」を、一括で「〜だ。」に変換
など、文字列の操作を便利に行うことができます。
Excelのテキスト処理はLEFT, MID,FIND等で良いのでは!?
これまで、Excelでテキストを加工・抽出する際には、
- LEFT関数(文字列の左側から指定した文字数分取得する)
- RIGHT関数(文字列の右側から指定した文字数分取得する)
- MID関数(指定した位置から指定した文字数分取得する)
- FIND関数、SEARCH関数(検索したい文字列がある位置を取得する)
などの関数を駆使していました。(↓参考)
これらの関数で実現できるなら、別に正規表現なんて使わなくても良くない?とも思ってしまいますよね・・・!?正規表現に触れたことのない方は尚更かと思います。
しかし、正規表現を使うことには様々なメリットがあります。
Excelで正規表現(regex)を使うことのメリット
Excelに慣れている方なら使い慣れたこれらの関数を組み合わせてテキストの加工をしているかと思いますが、複雑なテキスト加工の際は関数がかなり複雑になり、
数式を作るのも大変、他の人がリプレイスする際にも難解だったりと色々と課題がありました。
正規表現を使うことで、複雑なテキスト加工にも対応できるようになりますし、正規表現はHTMLやJavaScript、Python、Google Apps Script(GAS)、VS CodeなどのIDE、テキストエディタ、コマンドラインなど幅広く使われているため、Excel独自の関数を使うよりも互換性・可読性の向上につながります。
Excelで正規表現(regex)を使う方法
Excelで正規表現(regex)を使うには、任意のセルにいずれかの数式を入力します。
具体的な使い方は、以下のとおりです。
セルに関数を入力する
任意のセルに、関数を入力します。半角イコール(=)のあとに、関数名を入力します。
途中まで入力すると、ガイドが出ます。
入力対象の部分は太字になるので、それに従って入力すると分かりやすいです。
【注意】正規表現はダブルクォーテーション(“)で囲むこと!
正規表現の部分は、必ずダブルクォーテーションで囲んでください。
正規表現は、ダブルクォーテーション(“)で囲んでください。(囲まないとエラーになります)
REGEXTEST関数:正規表現に一致するかどうかを判定
REGEXTEST関数は、指定されたテキストの一部が正規表現パターンにマッチするかどうかを調べる関数です。
正規表現部分は、ダブルクォーテーション(“)で囲んでください!
参考:Microsoft公式サイト>REGEXTEST 関数
【具体例】テキストが数値かどうかを判定
以下は、REGEXTEST関数を用いて、テキストが数値かどうかを判定する例です。
=REGEXTEST(A2,"^\d+$")
上記の結果、数値であるA2セルのみが「TRUE」となります。
REGEXEXTRACT関数:正規表現に一致する箇所を抽出
REGEXEXTRACT関数は、対象の文字列のなかから、正規表現パターンに一致する文字列を取得するための関数です。
正規表現部分は、ダブルクォーテーション(“)で囲んでください!
参考:Microsoft公式サイト>REGEXEXTRACT 関数
【具体例】電話番号を抽出
以下は、REGEXEXTRACT関数を用いて電話番号を抽出する例です。
=REGEXEXTRACT(A1,"\d{3}-\d{3,4}-\d{4}")
1つ目の引数で、検索対象となるテキストを指定、
2つ目の引数で、正規表現(取得したい文字列パターン)を指定
3つ目、4つ目の引数は省略
上記の関数の実行結果として、C3セルには電話番号のみ抽出されます。
REGEXREPLACE関数:正規表現パターンにマッチする箇所を別のテキストで置換
REGEXREPLACE関数は、指定したテキストのうち、正規表現パターンにマッチする箇所を別のテキストで置換する関数です。
正規表現部分は、ダブルクォーテーション(“)で囲んでください!
参考:Microsoft公式サイト>REGEXREPLACE関数
【具体例】テキスト内の空白文字を削除
以下は、REGEXREPLACE関数を用いて、空白文字を空文字に置き換える例です。
=REGEXREPLACE(A1,"(\s| )","")
4番目の引数の「置き換え対象」については、何も指定しなければ全てが置き換え対象となります。負の数値を指定すると、末尾から検索して該当部分を置き換えます。
=REGEXREPLACE(A1,"(\s| )","",-3)
上位の例では、引数に -3 を指定しているため、後ろから検索して3番目に該当する空白部分を空文字に置き換えています。
主な正規表現一覧
以下に、主な正規表現一覧を記載します。
文字列 | 説明 | 例 |
---|---|---|
. | 任意の1文字 | A.C:AあC、ABC、A★C ..定食:焼肉定食、唐揚定食 |
* | 直前のパターンの 0回以上の繰り返し | ABC*:AB、ABCC、ABCCC (直前のCは一度もなくてもいい) go*gle:ggle、gooooooogle |
+ | 直前のパターンの 1回以上の繰り返し | ABC+:ABC、ABCC、ABCCC (直前のCは一度以上ないとだめ) go+gle:google、gooooooogle |
? | 直前のパターンの 0回か1回の繰り返し | ABC?:AB、ABC (直前のCは0回か1回しかだめ) go?gle:ggle、google |
^ | 先頭にマッチする | ^犬:「犬はかわいい」は該当 (「かわいい犬」はだめ) |
$ | 末尾にマッチする | ござる$:「拙者でござる」は該当 (「拙者でござるよ」はだめ) |
\ | \をエスケープ | \\:「\」を検索する |
\n | 改行 | |
\t | タブ | |
\s | 空白文字 | 半角の空白、タブ、改行が対象 |
\d | 半角数字 | “It’s 200 yen.” \d:「2」が該当 \d+:「200」が該当 |
\w | 全ての半角英数字と _(アンダースコア) | “あいうabc123” \w:「あ」が該当 \w{4}:「abc1」が該当 |
() | グループにまとめた 複数の文字 | “おは!おはよ!おはよう!” /(おは)/:「おは!」が該当 /(おはよ)/:「おはよ!」が該当 |
[] | 指定した文字の いずれか | [あいう]:「あ」「い」「う」が該当 [A-Z]:A~Zのいずれか [0-9]:0~9のいずれか |
{n} | 直前の文字を n回繰り返し | ABC{3}:ABCCC [0-9]{4}:4桁の半角数字 |
| | または | Google|Apple:「Google」か「Apple」 |
ChatGPTに生成してもらうのが楽なのでおすすめ
1から正規表現パターンを自分で作るのが面倒だという場合は、ChatGPTで正規表現を作成させたり、ネットで検索してそれをコピペすると早いです。
現在はアカウント登録なしで使えるのでおすすめです。
ChatGPT (別タブで開きます)
エラーになる場合はネット検索も活用してみよう
ただし、ChatGPTで生成された正規表現をそのまま使うと意図したとおりにテキスト加工ができない場合があります。
このような場合には、ネットで調べて他の書き方で試してみると良いでしょう。
まとめ
今回は、2024年5月から使えるようになった、Excelでの正規表現
について、具体的な使い方を交えて解説しました。
現在はデスクトップ版のExcelのみで使える関数となっていますが、Microsoftは「XLOOKUP関数」「XMATCH関数」の検索モードで正規表現も使えるようにする予定と発表しています。
今後はさらにExcelが便利になりそうですね!
▼関連記事
コメント