【问题标题】:vbscript search for pattern prefix and return wordvbscript 搜索模式前缀并返回单词
【发布时间】:2016-04-16 12:44:40
【问题描述】:

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

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

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

文本文件中没有合适的行,意味着一行可能包含 整个事情,所以返回线是有问题的。 程序应返回 [Hello_World]、[Hi_Venus]、[Yo_Moon] 以匹配模式 [CATS]。

我的当前代码(.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 应用程序中使用它。 这将返回包含该模式的文件路径和行号。但我希望它搜索前缀并返回上面提到的下一个元素。

【问题讨论】:

  • MyArray = Split(line, "[CATS].", -1, 1)?见Split Function
  • Split() 不好,因为输入包含既不是分隔符也不是目标的文本。

标签: vbscript hta


【解决方案1】:

使用正则表达式在[] 中查找文本,前面是[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]

【讨论】:

    猜你喜欢
    • 2020-08-18
    • 1970-01-01
    • 2016-07-26
    • 1970-01-01
    • 2012-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-09
    相关资源
    最近更新 更多