我有一个文本文件,其中的一行文本包含一个字符串:
--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子字符串,而不是整个行?
答案 0 :(得分:1)
Match
始终是与模式匹配的整个字符串,您正在寻找的“组”是通过SubMatches
在vbscript中获得的。
if oMatches.Count > 0 then
result = oMatches(0).SubMatches(0)
end if
如果您在模式中使用了多个花括号,则可以通过.SubMatches(1)
等在这里找到它们。
顺便说一句。您的模式不必匹配整个输入字符串(无论如何您都不使用锚点^$
),您可以仅使用(PASS|FAIL)
作为模式,也可以使用=(PASS|FAIL):
。