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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...