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 件のコメント:
コメントを投稿
コメントを頂ければ幸いです。