RegExp・正規表現で、パターンの一部分を取得するには?

解決


mady  2003-11-12 17:40:35  No: 80397  IP: [192.*.*.*]

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を使用しています。

もしできるのであれば、ご存知のかたよろしくお願いします。

編集 削除
魔界の仮面弁士  2003-11-12 21:41:01  No: 80398  IP: [192.*.*.*]

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

編集 削除
mady  2003-11-13 16:31:29  No: 80399  IP: [192.*.*.*]

!!ちゃんとできるんですね。
ありがとうございました。

編集 削除