VBS中的正则表达式错误

时间:2014-02-11 14:45:12

标签: 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)

编辑:所以问题是外观,VB不支持。任何人都可以建议一个与预期目标相匹配的模式,只有预期的目标吗?

1 个答案:

答案 0 :(得分:2)

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

因此无法使用(?<=\d\s\x22)。使用

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

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