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

时间:2019-06-22 12:12:22

标签: vbscript

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

--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子字符串,而不是整个行?

1 个答案:

答案 0 :(得分:1)

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

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

如果您在模式中使用了多个花括号,则可以通过.SubMatches(1)等在这里找到它们。

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