【Excel VBA】正規表現でいろいろなパターンを判別 RegExp

投稿者: | 2020年9月5日
excelアイコン

エクセルバージョン

マイクロソフト365

 

regexpオブジェクトはVBスクリプトのオブジェクトですが、VBAでもCreateObjectを使うか、参照設定(Microsoft VBScript Regular Expressions)することで使用可能になります。

非常に強力な検索ができますので。ぜひこの機会にマスターしちゃいましょう!

 

パターンの種類

 abc
解説abcを含む
結果

 

 ^ → (例)^https
解説

文字列の先頭が一致

結果

 

 $(ドルマーク) → (例)_$
解説末尾の文字が一致
結果

使用例:正規表現(RegExp)で置換

 

 .(ドット) → (例)c.t
解説.ドットが任意の一文字(改行は除く)
結果

 

 ? → (例)https?://
解説直前のパターンが0回または1回現れる。
結果

 

 + → (例)https+://
解説

直前のパターン1回以上の繰り返し。

結果

 

 * → (例)https*://
解説直前のパターン0回以上の繰り返し。
結果

 

 [ ] → (例)[abc]
解説[ ]の中の文字が1文字でも合致。
結果

 

 | → (例)a|b|c
解説|で区切られた文字が1文字でも合致。
結果

 

 [  –  ] → (例)[a-z]
解説小文字のa~zが合致。
結果

 

 [^  –  ] → (例)[^a-z]
解説小文字のa~z以外
結果

 

 その他 → (例)田(中|口)
解説田中、田口が含まれてたら
結果

 

省略形

\w[a-zA-Z_0-9]と等価
\W[^a-zA-Z_0-9]と等価
\d[0-9]と等価(数字)
\D[^0-9]と等価(数字ではない)
\s任意のスペース文字にマッチ
\S任意の非スペース文字にマッチ

 

RegExpのメソッドとプロパティ

メソッド/プロパティ内容詳細
Patternパターン

検索パターン設定
例 rExp.Pattern = “[^a-z]”
VBAサンプル➀

IgnoreCase大文字/小文字

大文字と小文字を区別しない(True)
大文字と小文字を区別(初期値:False)
VBAサンプル➁

Global検索指定

文字列全体を検索(True)
最初の一致を検索(初期値:False)
VBAサンプル③

Test一致/不一致

パターンの一致(True)
パターンの不一致(False)
VBAサンプル④

Replace置換object.Replace(文字1,文字2)→文字2が表示
Executeオブジェクト取得

object.Execute(文字)
Matchオブジェクト取得
Matchコレクション取得

 

MatchオブジェクトとMatchesコレクション

Matchオブジェクト

プロパティ詳細
FirstIndex最初にマッチした位置を取得
Lengthマッチした文字数を取得
Valueマッチした文字列を取得

 

Matchesコレクション

プロパティ詳細
CountMatchオブジェクトの個数取得
ItemItemプロパティ取得

 

VBAサンプル

参照設定をする場合

 

CreateObjectを使用する場合

 

試す場合

1 rExp.Pattern = ” “ ← ダブルクォーテーションの中にお好きなパターンを入力します。

A1~A10に検索したい文字をを入力します。

B列に結果として〇が表示されます。

 

関連記事

【エクセル関数】ワイルドカードとチルダで(~が含まれていたら)検索

【Excel VBA】メールの正規表現エラーチェック(RegExp)

【Excel VBA】Like演算子でパターンのサンプル例をご紹介!

Excel

Excel目次