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