RegExp・正規表現で、パターンの一部分を取得するには?
例えばJavaScriptでは
直前の正規表現マッチングにおける、n番目の (...) に対応する文字列を返します。
"12:34:56".match(/(\d+):(\d+):(\d+)/);
document.write(RegExp.$1 + "<br>"); // → 12
document.write(RegExp.$2 + "<br>"); // → 34
document.write(RegExp.$3 + "<br>"); // → 56
とほほ より抜粋
のように、検索後にパターンの一部の文字列を取得することができます。
これと同じようなことがVBから参照するスクリプトでも
実現できるのでしょうか?
いろいろ調べたのですができないかも…と思っています。
今はMicrosoft VBScript Regular Expressions5.5を使用しています。
もしできるのであれば、ご存知のかたよろしくお願いします。
Matchesコレクションや、SubMatchesコレクションについて調べてみてください。
冗長的に書くなら、こんな感じ。
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Pattern = "(\d+):(\d+):(\d+)"
Set objMatches = objRegExp.Execute("12:34:56")
If objMatches.Count > 0 Then
Set M = objMatches(0)
If M.SubMatches.Count >= 3 Then
MsgBox M.SubMatches(0)
MsgBox M.SubMatches(1)
MsgBox M.SubMatches(2)
End If
End If
!!ちゃんとできるんですね。
ありがとうございました。
ツイート | ![]() |