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

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

正規表現関数(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




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

縦横スピルしないXLOOKUP代替(MATCH+INDEX,FILTER,CHOOSEROWS)
直積(クロス結合、交差結合)とピボット解除
複数の文字列を検索して置換するSUBSTITUTE
LAMBDA以降の新関数の問題集
LAMBDA以降の新関数の問題と解説(ヘルパー関数編)
LAMBDA以降の新関数の問題と解説(配列操作関数編)
PY関数(Pythonコードをセル内で実行)
GROUPBY関数(縦軸でグループ化して集計)
PIVOTBY関数(縦軸と横軸でグループ化して集計)
イータ縮小ラムダ(eta reduced lambda)
正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)


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

正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)|エクセル入門(2024-07-02)
エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)
ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
累計を求める数式あれこれ|エクセル関数応用(2024-01-22)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.RangeとCellsの使い方|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.メッセージボックス(MsgBox関数)|VBA入門
8.セルのクリア(Clear,ClearContents)|VBA入門
9.並べ替え(Sort)|VBA入門
10.ブック・シートの選択(Select,Activate)|VBA入門




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


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。


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