VBAで正規表現を使ってみるテスト
SubMatchをつかって、グループ化した正規表現にマッチする文字列を拾い出す
Sub RegExpr()
'正規表現のテスト
'正規表現をグループ化して、submatchで取り出す
'正規表現を使うときに使う変数類
Dim RE As Object
Dim Match, Matches, Matches2
Dim STR As String
Dim i As Integer
Set RE = CreateObject("VBScript.RegExp")
STR = "aaa000bbb111"
RE.Pattern = "(^.)(..)..(.+$)"
RE.ignorecase = True
RE.Global = True
Set Matches = RE.Execute(STR)
Debug.Print Matches.Count
Debug.Print Matches.Item(0)
If Matches.Count > 0 Then
Set Matches2 = Matches(0).SubMatches
Debug.Print Matches2.Count
For i = 0 To Matches2.Count - 1
Debug.Print Matches2(i)
Next
End If
End Sub
これの実行結果は、以下。イミディエイトウィンドウに出力されます。
1
aaa000bbb111
3
a
aa
0bbb111
最初の1はDebug.Print Machtes.Countの出力で、RE.Patternで与えているパターン全体にマッチした回数が1であることを示しています。次の行は、与えたパターンでパターンマッチを行ってマッチした文字列全体です。
括弧でくくられた文字列グループにマッチした文字列は
set Matches2 = Matches(0).SubMatches
で取得され、Matches2コレクションに格納されます。これをFor Next文で取り出しています。
次の3は括弧でくくられた文字列グループ何個にマッチしたかを示しています。Debug.Print Matches2.Countの出力です。
(^.)は行頭の1文字、(..)は行頭の1文字に続く2文字、..で2文字置いて(.+$)で1文字以上で行末まで続く任意の文字にマッチして、それがSubMatchに格納されます。
0 件のコメント:
コメントを投稿
コメントを頂ければ幸いです。