1

現在、Instr/Split を使用してこれを行っていますが、一般的に正規表現の方がはるかに高速であることがわかりました (これは、1 回の実行で 100K 以上のテストを行う内部ループです)。

一般的な形式は次のとおりです。

word0 = word1, word2, word3...  

の右側に 1 つ以上の単語があります=。単語は として定義され[\w.-]+ます。任意の時点でも空白を許可する必要があります。=が必要です。

Matches コレクションでword1word2、およびword3だけを返したい。

それ=が私を困惑させたものです。パターンに応じて、1 つ一致するか、まったく一致しません。

ここにいくつかのテストコードがあります。17 行目を変更RE.Patternしてテストします。

Option Explicit

Test1 "word1, word2",""
Test1 " word0 = word1, word.2  , word3.qrs_t-1", "word1 word.2 word3.qrs_t-1"
Test1 "word0=word1", "word1"

WScript.Quit

Sub Test1(TestString, CorrectOutput)

    Dim RE, Matches, Answer
    Dim i, j

    Set RE     = New RegExp
    RE.Global  = True

    RE.Pattern = "=([\w.-]+)"

    Set Matches = RE.Execute(TestString)

    Answer =  "Input:  " & vbTab & TestString & vbLf
    Answer = Answer & "Correct:" & vbTab & CorrectOutput & vbLf

    Answer = Answer &  "Actual: " & vbTab

    For i = 0 To Matches.Count -1
        If i > 0 Then
            Answer = Answer & " "
        End If
        Answer = Answer & Matches(i).value
    Next

    MsgBox Answer

End Sub
4

2 に答える 2