VBS 中的正则表达式错误

标签 regex vbscript

我不断收到错误:正则表达式中的语法错误。我已经使我的正则表达式模式变得越来越简单,可以尝试解决我对导致问题的原因的猜测。我现在被困住了。

这是模式:(?<=\d\s\x22)(.*?)(?=\x22)

这是干草堆:

Dhcp Server \\192.168.7.111 add scope 10.10.1.0 255.255.255.0 "UPS-VLAN 1005" "Monitor APC UPS in data closets"`
Dhcp Server \\192.168.7.111 Scope 10.10.1.0 Add reservedip 10.10.1.22 00a0a0aa0000 "SITE-SEA-100-1A00-APC" "APC Room 1C00" "DHCP"
Dhcp Server \\192.168.7.111 Scope 10.10.1.0 Add reservedip 10.10.1.123 00a0a0aa0000 "SITE-SEA-100-13B48-APC" "" ""
Dhcp Server \\192.168.7.111 Scope 10.10.1.0 Add reservedip 10.10.1.122 00a0a0aa0000 "SITE-SEA-100-12B27-APC" "" ""
Dhcp Server \\192.168.7.111 Scope 10.10.1.0 Add reservedip 10.10.1.103 00a0a0aa0000 "SITE-SEA-100-2C24-APC" "" ""

这是预期的匹配:UPS-VLAN 1005

这是有问题的代码:

        strLine = unparsed_scopename_file.ReadLine
        Set objRE = New RegExp
        With objRE
            .Pattern    = "(?<=\d\s\x22)(.*?)(?=\x22)"
            .Global     = False
        End With
        Set objMatch = objRE.Execute(strLine)

我在最后一行收到错误。

FWIW,这是我最近的模式,但我知道量词不能在后视中使用:(?<=\.\d+\s\x22).*?(?=\x22)

编辑:所以问题是lookbehind,VB不支持lookbehind。任何人都可以建议一种与预期目标匹配且仅与预期目标匹配的模式吗?

最佳答案

VBScript 基于 ECMAScript,而 ECMAScript 的正则表达式实现根本不支持后向断言。

因此(?<=\d\s\x22)不能使用。使用

"(?:\d\s\x22)(.*?)(?=\x22)"

并检查第 1 组的内容以了解比赛的相关部分。

关于VBS 中的正则表达式错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21704999/

相关文章:

c++ - boost 正则表达式构造函数中的互斥断言

python - 处理找到的要替换的子串

regex - 使用 RegEx Extractor 从 JSON 响应中提取多个值

javascript - Connection.Execute 在 VBScript 中如何工作?

regex - 如何删除字符串中的空格或制作接受所有类型有效电子邮件的正则表达式

regex - 正则表达式 : Extract the lines

java - 错误 - 从 java 代码运行 vbscript

VBScript:格式化字符串的最简单方法是什么?

vbscript - 从 VBScript 重新读取环境变量

excel - 我可以使用 UTF-8 无 BOM 导出 Excel 数据吗?