从 VBScript 中的文本文件中获取模式匹配值

Fetching the pattern matched value from text file in VBScript

我有一个文本文件,其中一行文本包含 1 个字符串:

--Result=PASS:Passed
--Result=FAIL:Failed

我正在尝试使用 VBScript 中的模式匹配概念来获取值 PASS 或 FAIL,但到目前为止只能匹配字符串并检索整行。请在下面找到正在使用的代码:

Dim oRE, oMatches
Set oRE = New RegExp
oRE.Pattern = "--Result=(PASS|FAIL).*"
Set objFileToRead = CreateObject("Scripting.FileSystemObject").OpenTextFile("C:\tmp\resultfile.txt",1)
Dim strline
do while not objFileToRead.AtEndOfStream 
strline = objFileToRead.ReadLine()
Set oMatches = oRE.Execute(strline)
For Each oMatch in oMatches
result = oMatch.Value
Next

我现在得到的结果是整条匹配线。是否可以只从文本文件中获取 PASS 或 FAIL 子字符串而不是整行?

Match 始终是与模式匹配的整个字符串,您正在寻找 'Groups',这是您通过 SubMatches 在 vbscript 中获得的。

if oMatches.Count > 0 then
    result = oMatches(0).SubMatches(0)
end if

如果您在模式中使用多个大括号,您可以通过 .SubMatches(1) 等在此处找到它们。

顺便说一句。您的模式不必匹配整个输入字符串(无论如何您都不使用锚 ^$),您可以只使用 (PASS|FAIL) 作为模式,或者 =(PASS|FAIL):