vbscript搜索模式前缀并返回单词

时间:2016-04-15 21:36:11

标签: vbscript hta

您好我正在File中搜索特定模式(前缀)并尝试返回整个单词。文件中存在多次模式

例如:我有一个包含以下文本的文本文件: -

[CATS].[Hello_World] Lorem Ipsum [CATS].[Hi_Venus] Demo Text [CATS].[Yo_Moon] Lorm Ipsum 

文本文件中没有正确的行,表示一行可能包含 整个事情如此回归是有问题的。 程序应返回[Hello_World],[Hi_Venus],[Yo_Moon]以匹配模式[CATS]。

我的Cureent代码(.hta文件)是: -

Dim sStartPath, sStartFile, sFilter, sCaption, filePath
sStartPath = "D:\Remote"
sStartFile = sStartPath & "\nul"
sFilter    = "All Files (*.*)|*.*|" _
  & "VBScript (*.vbs;*.vbc)|*.vbs;*.vbc|" _
  & "HTML (*.htm;*.html;*.hta)|*.htm;*.html;*.hta|"
sCaption = "Choose a File:"

Sub ProcessFile()
On Error Resume Next
filePath = document.My_Process_Form.txtfile.value
        Set contents = filePath.OpenAsTextStream
        If err.number = 0 then
        Linenum = 0
        Do Until contents.AtEndOfStream
            line = contents.readline
            Linenum = Linenum + 1
                Test = Instr(line, [CATS]) 
                If Isnull(Test) = false then If Test > 0 then           demo.innerText = "1" & filePath & " " & Linenum
        Loop

        Else
            err.clear
        End If
End Sub

我在具有其他功能的hta应用程序中使用它。 这将返回包含该模式的文件路径和行号。但我希望它搜索前缀并返回上面提到的下一个元素。

1 个答案:

答案 0 :(得分:4)

使用RegExp查找[][CATS].之前的文字,如

>> s = "[CATS].[Hello_World] Lorem Ipsum [CATS].[Hi_Venus] Demo Text [CATS].[Yo_Moon] Lorm Ipsum "
>> Set r = New RegExp
>> r.Global = True
>> r.Pattern = "\[CATS\]\.(\[[^]]+\])"
>> Set ms = r.Execute(s)
>> For Each m In ms
>>     WScript.Echo m.SubMatches(0)
>> Next
>>
[Hello_World]
[Hi_Venus]
[Yo_Moon]