我现在正在使用 Instr/Split 执行此操作,但发现正则表达式通常要快得多(这是一个内部循环,每次运行 100K+ 测试)。
一般形式为:
word0 = word1, word2, word3...
的右侧有一个或多个单词=
。一个词被定义为[\w.-]+
。我还需要在任何时候允许空格。=
是必需的。
我想只返回Matches 集合中的word1、word2和word3。
这=
就是让我难过的地方。根据模式,我要么得到一个匹配项,要么没有一个匹配项。
这是一些测试代码。在第 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