如何解决VBScript-即使正则表达式已在在线测试仪中验证,也无法使正则表达式在脚本中匹配
我正在Windows 10笔记本电脑上测试以下.vbs代码段,但该代码段不匹配。正则表达式本身根据regex101.com来说还算不错-它确实在月份匹配,但是在运行脚本时却不匹配-而且由于我对VBScript的了解非常少-我似乎无法解决这个难题。我认为我缺少VBScript和Regex的特定内容。
Dim dateAndTime
dateAndTime = Mid("Tue,8 Oct 2019 11:47:37 +0200 (GMT+02:00)",6,20)
Wscript.Echo "dateAndTime=" & dateAndTime
Set objRegExp = new RegExp
objRegExp.Global = True
' Neither patterns works,but all is fine in regex101
objRegExp.Pattern = "^\w{3,},\s\d{1,2}\s(\w{3,})"
'objRegExp.Pattern = "^\w+,\s\d+\s(\w+)"
'objRegExp.Pattern = "\w+,\d+ (\w+)"
If (objRegExp.Test(dateAndTime) = True) Then
' never gets here
Wscript.Echo "Match"
else
' always ends here
Wscript.Echo "No match"
end if
以防万一有人怀疑-我们正在将hmailserver用作我们的测试环境的电子邮件服务器-并且我正尝试批量删除邮件。问题是消息具有英语语言环境,但是服务器具有挪威语语言环境。因此,例如在挪威语言环境中,十月简写为“十月”和“十月”。因此,我需要更新脚本并将“ Oct”替换为“ Okt”,以便能够创建日期对象,然后查看消息是否早于X天才能删除。
解决方法
如果我了解您的目标是获得Tue,8 Okt 2019 11:47:37 +0200 (GMT+02:00)
而不是Tue,8 Oct 2019 11:47:37 +0200 (GMT+02:00)
因此您可以像这样修改脚本:
Dim dateAndTime
dateAndTime = "Tue,8 Oct 2019 11:47:37 +0200 (GMT+02:00)"
Set objRegExp = new RegExp
objRegExp.Global = True
objRegExp.Pattern = "(^\w{3,},\s\d{1,2}\s)(\w{3,})"
If (objRegExp.Test(dateAndTime) = True) Then
Wscript.Echo "Match"
strReplace = "$1 Okt"
NewDateTime = objRegExp.Replace(dateAndTime,strReplace)
wscript.echo NewDateTime
else
Wscript.Echo "No match"
end if
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。