VBA で正規表現を使う(RegExp オブジェクトのプロパティ)
2018/03/24
RegExp オブジェクトのプロパティ
RegExp オブジェクトの詳細に関しては、VBA で正規表現を使う(RegExp オブジェクト)、メソッドの詳細に関しては、RegExp オブジェクトのメソッド を参照してください。
Pattern プロパティ
検索される正規表現のパターンを設定します。値の取得も可能です。
object.Pattern = SearchString
引数・戻り値
- object ・・・ 対象となる RegExp オブジェクトを指定します。
- SearchString ・・・ 検索される文字列式を指定します。正規表現で使用できる文字等に関しては、VBA で正規表現を使う(RegExp オブジェクト) を参照してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
' 参照設定:Microsoft VBScript Regular Expressions 5.5 Dim re As RegExp Set re = New RegExp 'アルファベット(大文字・小文字)にマッチする正規表現 re.Pattern = "[a-zA-Z]+" '「山」または「川」で始まり「子」で終わる文字列にマッチする正規表現 re.Pattern = "^(山|川).*子$" '「bb」で始まり3文字目は「b」以外の文字列にマッチする正規表現 re.Pattern = "^b{2}[^b]." |
IgnoreCase プロパティ
パターン検索で大文字と小文字を区別するかどうかを設定します。
object.IgnoreCase = boolean
引数・戻り値
- object ・・・ 対象となる RegExp オブジェクトを指定します。
- boolean ・・・ パターン検索するときに、大文字・小文字を区別するかどうかを指定します。True に設定すると大文字・小文字を区別しなくなります。既定値は、False です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
Sub Sample_RegExp_IgnoreCase() ' 参照設定:Microsoft VBScript Regular Expressions 5.5 Dim re As RegExp Dim i As Long Dim myStr1 As String Dim myStr2 As String Dim str(1 To 3) As String Set re = New RegExp myStr1 = "IgnoreCase = False(大文字・小文字を区別する)" myStr2 = "IgnoreCase = True(大文字・小文字を区別しない)" str(1) = "abcdef" str(2) = "ABCDE" str(3) = "ABCdef" re.Pattern = "^[a-z]+$" re.IgnoreCase = False For i = 1 To 3 myStr1 = myStr1 & vbCrLf & _ str(i) & vbTab & re.Test(str(i)) Next i re.IgnoreCase = True For i = 1 To 3 myStr2 = myStr2 & vbCrLf & _ str(i) & vbTab & re.Test(str(i)) Next i MsgBox myStr1 & vbCrLf & vbCrLf & myStr2 End Sub |
実行結果
Global プロパティ
検索文字列全体についてのパターンとの一致を検索するかどうかを設定します。
object.Global = boolean
引数・戻り値
- object ・・・ 対象となる RegExp オブジェクトを指定します。
- boolean ・・・ ブール型(Boolean)の値を指定します。検索文字列全体についてのパターンとの一致を検索する場合は、True、最初の一致だけを検索する場合は、False(既定値)を指定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
Sub Sample_RegExp_Global() ' 参照設定:Microsoft VBScript Regular Expressions 5.5 Dim re As RegExp Dim mc As MatchCollection Dim m As Match Dim myStr1 As String Dim myStr2 As String Dim orgStr As String Dim i As Long Set re = New RegExp myStr1 = "【Global = True の場合】" & vbCrLf myStr2 = "【Global = False の場合】" & vbCrLf orgStr = "AAA BBB ccc DDD eee" re.Pattern = "[A-Z]{3}" re.IgnoreCase = False re.Global = True Set mc = re.Execute(orgStr) For i = 0 To mc.Count - 1 Set m = mc.Item(i) myStr1 = myStr1 & m.Value & vbCrLf Next i re.Global = False Set mc = re.Execute(orgStr) For i = 0 To mc.Count - 1 Set m = mc.Item(i) myStr2 = myStr2 & m.Value & vbCrLf Next i MsgBox "検索された文字列" & vbCrLf & myStr1 & vbCrLf & myStr2 End Sub |
実行結果
MultiLine プロパティ
文字列を複数行として扱うかどうかを設定します。
object.MultiLine = boolean
引数・戻り値
- object ・・・ 対象となる RegExp オブジェクトを指定します。
- boolean ・・・ ブール型(Boolean)の値を指定します。文字列を複数行として扱う場合は、True を指定します。この場合、各行の先頭や末尾で、“^” や “$” がマッチするようになります。初期値は False に設定されています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
Sub Sample_RegExp_MultiLine() ' 参照設定:Microsoft VBScript Regular Expressions 5.5 Dim re As RegExp Dim myStr1 As String Dim myStr2 As String Dim orgStr As String Set re = New RegExp myStr1 = "【Global = True の場合】" & vbCrLf myStr2 = "【Global = False の場合】" & vbCrLf orgStr = "ABCDE" & vbCrLf orgStr = orgStr & "FGHIJ" & vbCrLf orgStr = orgStr & "KLMNO" re.Pattern = "^F" re.MultiLine = False myStr1 = "MultiLine = False の場合" & vbTab & re.Test(orgStr) re.MultiLine = True myStr2 = "MultiLine = True の場合" & vbTab & re.Test(orgStr) MsgBox myStr1 & vbCrLf & myStr2 End Sub |
実行結果
関連記事
-
-
指定した値を16進数で表記した文字列に変換する(Hex 関数)
Hex 関数 の使い方 【書式】 result = Hex ( expressi …
-
-
変数のデータ型・宣言(Dim ステートメント)
変数の宣言 一般的な方法 【書式】 Dim varname [ As type, …
-
-
データ型を調べて、そのデータ型を示す数値を返す(VarType 関数)
VarType 関数 の使い方 VarType 関数は、引数に、データ型を調べた …
-
-
ユーザー設定リストを使って並べ替える(Sort)
VBAでリスト、テーブルを並べ替える(Sort) VBAで、ソートを行うには、S …
-
-
日付時刻:数値から日付・時刻データを取得( DateSerial 関数、TimeSerial 関数 )
DateSerial 関数(数値を使って日付データを取得) 【書式】 date …
-
-
ショートカットメニュー(CommandBar オブジェクト)
ショートカットメニュー(コンテキストメニュー) 右クリックで表示されるメニューの …
-
-
日付時刻:時・分・秒を取得(Hour、Minute、Second 関数)
日付時刻から時・分・秒を取得する関数 【書式】 time_hour = Hour …
-
-
VBA の演算子(論理演算子:And、Eqv、Imp、Not、Or、Xor)
論理演算子 論理演算を行うときに使用する演算子で、以下の 6 種類があります。 …
-
-
配列(多次元配列・配列の次元の変更)
多次元配列 【書式】 多次元配列の宣言 <静的配列(固定長配列)> Dim my …
-
-
連想配列(Dictionary オブジェクト)
連想配列 連想配列とは、添字(キー)に文字列を使用することができる配列です。 V …