現在、Instr/Split を使用してこれを行っていますが、一般的に正規表現の方がはるかに高速であることがわかりました (これは、1 回の実行で 100K 以上のテストを行う内部ループです)。
一般的な形式は次のとおりです。
word0 = word1, word2, word3...
の右側に 1 つ以上の単語があります=
。単語は として定義され[\w.-]+
ます。任意の時点でも空白を許可する必要があります。=
が必要です。
Matches コレクションでword1、word2、および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