エクセル入門
正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)

Excelの初心者向け入門解説
公開日:2024-07-02 最終更新日:2026-01-15

正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)


正規表現 ("regex") を扱える3つの新関数です。


正規表現について
REGEXTEST関数:正規表現と一致するかどうかをチェック
REGEXREPLACE関数:正規表現に基づいて文字列を別の文字列に置き換える
REGEXEXTRACT関数:正規表現に基づいて文字列からテキストを抽出
先読み・後読み

正規表現について詳しく学習したい場合は、専門書籍や専門サイトで学習してください。


正規表現について

正規表現は文字列のマッチパターンを表現します。
以下は、正規表現の関数で指定するパターンを記述する正規表現 ("regex")です。

メタ文字

メタ文字の一覧です。正規表現でこれらの文字自身をマッチングしたい場合は、手前に「\」を付けてください。
^ $ ? * + . | { } \ [ ] ( )

正規表現

シンボル 機能
位置マッチング
^ 文字列の先頭にのみマッチします。
$ 文字列の末尾にのみマッチします。
\b 任意の単語境界にマッチします。
\B 任意の単語境界以外の位置にマッチします。
リテラル
英数字 英字と数字に文字どおりにマッチします。
\n 改行にマッチします。
\f フォーム フィードにマッチします。
\r キャリッジ リターンにマッチします。
\t 水平タブにマッチします。
\v 垂直タブにマッチします。
\? ? にマッチします。
\* * にマッチします。
\+ + にマッチします。
\. . にマッチします。
\| | にマッチします。
\{ { にマッチします。
\} } にマッチします。
\\ \ にマッチします。
\[ [ にマッチします。
\] ] にマッチします。
\( ( にマッチします。
\) ) にマッチします。
\xxx 8進数 xxx によって表現されるASCII文字にマッチします。
\xdd 16進数 dd によって表現されるASCII文字にマッチします。
\uxxxx UNICODE xxxx によって表現されるASCII文字にマッチします。
文字クラス
[xyz] 文字セットに含まれている任意の1文字にマッチします。
[^xyz] [^xyz] 文字セットに含まれていない任意の1文字にマッチします。
. \n 以外の任意の文字にマッチします。
\w 単語に使用される任意の文字にマッチします。[a-zA-Z_0-9]と等価。
\W 単語に使用される文字以外の任意の文字にマッチします。[^a-zA-Z_0-9]と等価。
\d 任意の数字にマッチします。[0-9]と等価。
\D 任意の数字以外の文字にマッチします。[^0-9]と等価。
\s 任意のスペース文字にマッチします。[ \t\r\n\v\f]と等価。
\S 任意の非スペース文字にマッチします。[^ \t\r\n\v\f]と等価。
繰り返し
{x} 正規表現のちょうど x個の直前の文字にマッチします。
{x,} 正規表現のx個以上の直前の文字にマッチします。
{x,y} 正規表現のx個以上、y個以下の直前の文字にマッチします。
? ゼロ個または1個の直前の文字にマッチします。{0,1}と等価。
* ゼロ個以上の直前の文字にマッチします。{0,}と等価。
+ 1個以上の直前の文字にマッチします。{1,}と等価。
選択とグループ化
() 複数の句をグループ化して、1つの句を作成します。ネストすることができます。 "(ab)?(c)" は "abc" または "c" にマッチします。
| 複数の句を1つの正規表現にまとめ、これらのうちの任意の句にマッチします。
後方参照
()\n n番目の括弧で囲まれた句にマッチします。

※これで全てではありません。他や詳細については書籍またはネット検索でしらべてください。

REGEXTEST関数

指定されたテキストの任意の部分が正規表現 ("regex") と一致するかどうかをチェックできます。
一致する場合はTRUE を返し、一致しない場合はFALSE を返します。

構文

REGEXTEST(text, pattern, [case_sensitivity])

引数 説明
text 一致するテキストを含むセルへのテキストまたは参照。
pattern 一致させるテキストのパターンを記述する正規表現 ("regex")。
case_sensitivity 一致で大文字と小文字が区別されるかどうかを判断します。
既定では大文字と小文字が区別されます。
0: 大文字と小文字の区別
1: 大文字と小文字を区別しない


使用例

C2=REGEXTEST(A2,B2)

郵便番号の形式として正しいかの確認です。
正規表現 REGEXTEST,REGEXREPLACE,REGEXEXTRACT

「\d」は任意の数字にマッチします。[0-9]と等価です。
「{x}」はちょうどx個の直前の文字にマッチします。
つまり、数字が3個、「-」を挟んで数字が4個、このようなテキストになっているかどうかの確認です。
上記数式は単純にTrue/Falseを返しているだけですが、IF関数等で文字列に変換すればよいでしょう。
=IF(REGEXTEST(A2,B2),"正","否")


REGEXREPLACE関数

指定された正規表現 のパターンに一致する文字列を別の文字列に置き換えることができます。

構文

REGEXREPLACE(text, pattern, replacement, [occurrence], [case_sensitivity])

引数 説明
text 文字列または文字列を置き換えるテキストを含むセルへの参照。
pattern 置き換えるテキストのパターンを記述する正規表現 ("regex")。
replacement パターンのインスタンスを置き換えるテキスト。
occurrence 置き換えるパターンのインスタンスを指定します。
既定では、occurrence は 0 で、すべてのインスタンスが置き換えられます。
負の数値は、末尾から検索して、そのインスタンスを置き換えます。
case_sensitivity 一致で大文字と小文字が区別されるかどうかを判断します。
既定では大文字と小文字が区別されます。
0: 大文字と小文字の区別
1: 大文字と小文字を区別しない

REGEXREPLACEは常にテキスト値を返します。


使用例

C2=REGEXREPLACE(A2,B2,)

テキスト中の数字だけを消す。または、数字以外を消す。
正規表現 REGEXTEST,REGEXREPLACE,REGEXEXTRACT

「\d」は任意の数字にマッチします。[0-9]と等価です。
「\D」は任意の数字以外にマッチします。[^0-9]と等価です。
replacementを省略することでマッチした文字を消去しています。

occurrenceを指定すると、その位置の文字だけが対象となります。

正規表現 REGEXTEST,REGEXREPLACE,REGEXEXTRACT


REGEXEXTRACT関数

指定された正規表現に基づいて文字列からテキストを抽出できます。
最初の一致、すべての一致、または最初の一致からグループをキャプチャすることができます。

構文

REGEXEXTRACT(text, pattern, [return_mode], [case_sensitivity])

引数 説明
text 文字列または文字列を抽出するテキストを含むセルへの参照。
pattern 抽出するテキストのパターンを記述する正規表現 ("regex")。
return_mode 抽出する文字列を指定する数値。
既定では、戻りモードは 0 です。
0: パターンに一致する最初の文字列を返します
1: パターンに一致するすべての文字列を配列として返します
2: 最初の一致からキャプチャ グループを配列として返す
case_sensitivity 一致で大文字と小文字が区別されるかどうかを判断します。
既定では大文字と小文字が区別されます。
0: 大文字と小文字の区別
1: 大文字と小文字を区別しない

REGEXEXTRACT は常にテキスト値を返します。


使用例

C2=REGEXEXTRACT(A2,B2,1)

数字だけ抽出、数字以外を抽出、数字と数字以外で分けて抽出
正規表現 REGEXTEST,REGEXREPLACE,REGEXEXTRACT

「|」は、複数の句を1つの正規表現にまとめ、これらのうちの任意の句にマッチします。
つまり、「\D+|\d+」で数字と数字以外のそれぞれにマッチします。


括弧()でかこまれた文字列を抽出
正規表現 REGEXTEST,REGEXREPLACE,REGEXEXTRACT

「.」は\n 以外の任意の文字にマッチ
「?」は0個または1個の直前の文字にマッチ
「*」は0個以上の直前の文字にマッチ
「.*?」は最短一致のパターンとして頻繁に使用されるものです。
「(」や「)」はメタ文字なので、この文字自身を使用するには直前に「\」を付けます。


先読み・後読み

先読みや後読みの形式で記述した場合には、パターンと文字列が一致した場合にその先頭位置にマッチします。
先読み・後読みについては、説明も難しいのでここでは簡単な紹介だけにとどめます。

書き方 意味、説明
(?=○) 肯定先読み。直後に○がある。
(?!○) 否定先読み。直後に○が無い。
(?<=○) 肯定後読み。直前に○がある。
(?<!○) 否定後読み。直前に○が無い。

括弧()でかこまれた括弧()の中の文字列を抽出
正規表現 REGEXTEST,REGEXREPLACE,REGEXEXTRACT


CSVの分割

一般的なCSVの分割です。

正規表現 REGEXTEST,REGEXREPLACE,REGEXEXTRACT

サンプル1

=REGEXREPLACE(
REGEXREPLACE(
REGEXREPLACE(
REGEXEXTRACT(
A1,"(^|,)(\s*""((\r\n|\n|""""|,|.)*?)""\s*|(.*?))(?=,|$)",1),
"^,",""),
"^""|""$",""),
"""""","""")

サンプル2

肯定後読みを使うことで、さらに簡略化できるようです。
https://x.com/furyutei/status/1979079965061816561
こちらを参考に作成しました。
=REGEXREPLACE(
REGEXREPLACE(
REGEXEXTRACT(
A1,"(?<=\A|,)(""(""""|[^""])*""|[^,]*)",1),
"^""|""$", ""),
"""""", """")

解読するのは大変ですが、生成AIを使って読み解いてみてください。
また、実務で扱うCSVはイレギュラーなものもあるので、望む結果となるかは、良く確認してください。




同じテーマ「エクセル入門」の記事

LAMBDA以降の新関数の問題と解説(ヘルパー関数編)
LAMBDA以降の新関数の問題と解説(配列操作関数編)
PY関数(Pythonコードをセル内で実行)
GROUPBY関数(縦軸でグループ化して集計)
PIVOTBY関数(縦軸と横軸でグループ化して集計)
イータ縮小ラムダ(eta reduced lambda)
正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)
TRIMRANGE関数(セル範囲をトリム:端の空白セルを除外)
TRANSLATE関数(翻訳) DETECTLANGUAGE関数(言語識別)
IMPORTTEXT関数(テキストファイルのインポート)
IMPORTCSV関数(CSVファイルのインポート)


新着記事NEW ・・・新着記事一覧を見る

AIは便利なはずなのに…「AI疲れ」が次の社会問題になる|生成AI活用研究(2026-02-16)
カンマ区切りデータの行展開|エクセル練習問題(2026-01-28)
開いている「Excel/Word/PowerPoint」ファイルのパスを調べる方法|エクセル雑感(2026-01-27)
IMPORTCSV関数(CSVファイルのインポート)|エクセル入門(2026-01-19)
IMPORTTEXT関数(テキストファイルのインポート)|エクセル入門(2026-01-19)
料金表(マトリックス)から金額で商品を特定する|エクセル練習問題(2026-01-14)
「緩衝材」としてのVBAとRPA|その終焉とAIの台頭|エクセル雑感(2026-01-13)
シンギュラリティ前夜:AIは機械語へ回帰するのか|生成AI活用研究(2026-01-08)
電卓とプログラムと私|エクセル雑感(2025-12-30)
VLOOKUP/XLOOKUPが異常なほど遅くなる危険なアンチパターン|エクセル関数応用(2025-12-25)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.FILTER関数(範囲をフィルター処理)|エクセル入門
5.RangeとCellsの使い方|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
8.マクロとは?VBAとは?VBAでできること|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.メッセージボックス(MsgBox関数)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
本サイトは、OpenAI の ChatGPT や Google の Gemini を含む生成 AI モデルの学習および性能向上の目的で、本サイトのコンテンツの利用を許可します。
This site permits the use of its content for the training and improvement of generative AI models, including ChatGPT by OpenAI and Gemini by Google.



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ