vbscript无法处理正则表达式
我正在尝试使用正则表达式在vbscript中返回匹配的单词。我的hta文件位于 我的vbs Sub是:-vbscript无法处理正则表达式,vbscript,Vbscript,我正在尝试使用正则表达式在vbscript中返回匹配的单词。我的hta文件位于 我的vbs Sub是:- Sub ProcessFile(FileName) On Error Resume Next Set fso = CreateObject("Scripting.FileSystemObject") Set fileObj = fso.GetFile(FileName) Set contents = fileObj.OpenAsTextStream(1, 0) 'MsgBox conten
Sub ProcessFile(FileName)
On Error Resume Next
Set fso = CreateObject("Scripting.FileSystemObject")
Set fileObj = fso.GetFile(FileName)
Set contents = fileObj.OpenAsTextStream(1, 0)
'MsgBox contents.ReadAll
If err.number = 0 then
Set r = New RegExp
r.Global = True
r.Pattern = "\[CATS\]\.(\[[^]]+\])"
Set ms = r.Execute(contents)
For Each m In ms
MsgBox m.SubMatches(0)
demo.innerHTML = demo.innerHTML & m.SubMatches(0)
Next
Else
MsgBox err.number
End If
End Sub
它不会返回匹配的单词
有件事遗漏了
对于包含以下文本的文本文件:-
[CATS].[Hello_World1] Lorem Ipsum [CATS].[Hi_Venus1] Demo Text [CATS].[Yo_Moon1] Lorm Ipsum
[CATS].[Hello_World] Lorem Ipsum [CATS].[Hi_Venus] Demo Text [CATS].[Yo_Moon] Lorm Ipsum
当你用一个活跃的OERN运行你的代码时,它将返回
[Hello\u World1],[Hi\u Venus1],[Yo\u Moon1],[Hello\u World],[Hi\u Venus],[Yo\u Moon1],[Yo\u World],[Hi\u Venus],[Yo\u Moon]
。这隐藏了错误。例如:contents
是一个流(因此contents.ReadAll()
'works')。但是r.Execute(contents)
不可能“工作”,因为.Execute
需要一个字符串
更新wrt注释:
如果您知道MsgBox contents.ReadAll
显示流的字符串内容,那么Set ms=r.Execute(contents.ReadAll())
应该不会太难。
请记住:
Set
用于将对象(流、匹配集合等)分配给变量;因此,Set str=contents.ReadAll
不可能“工作”(如果禁用/删除OERN,您会被告知这一点)。您还可以使用Do…Loop语句逐行处理它
Sub ProcessFile(FileName)
Set fso = CreateObject("Scripting.FileSystemObject")
Set fileObj = fso.GetFile(FileName)
Set contents = fileObj.OpenAsTextStream(1, 0)
If err.number = 0 then
Linenum = 0
Do Until contents.AtEndOfStream
line = contents.readline
Linenum = Linenum + 1
Set r = New RegExp
r.Pattern = "\[CATS\]\.(\[[^]]+\])"
Set ms = r.Execute(line)
For Each m In ms
MsgBox m.SubMatches(0)
demo.innerHTML = demo.innerHTML & m.SubMatches(0)
Next
Loop
Else
err.clear
End If
End Sub
和从我们的角度阅读你的问题。你错过了什么?还是不知道…很明显,你的问题是什么。我们无法读懂你的心思。什么不起作用了?对不起。。。。。。我已经更新了问题,没有意识到有什么方法可以做到这一点。。我试过设置str=contents.ReadAll非常感谢。。我必须遵循的一个教训是,总是在没有OERN的情况下工作。@KailashSingh调试代码问题时,首先要注释掉它。
如果Isnull(ms)=false,那么
-ms永远不能为Null,将布尔表达式与布尔常量进行比较是毫无意义的。