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

解決


mady  2003-11-13 02:40:35  No: 80397

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-13 06:41:01  No: 80398

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-14 01:31:29  No: 80399

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加