我一直收到错误:正则表达式中的语法错误。我已经使我的正则表达式模式更简单,更容易尝试并解决导致问题的原因。我现在被困住了。
以下是模式:(?<=\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不支持。任何人都可以建议一个与预期目标相匹配的模式,只有预期的目标吗?
答案 0 :(得分:2)
VBScript基于ECMAScript,而ECMAScript的正则表达式实现根本不支持lookbehind断言。
因此无法使用(?<=\d\s\x22)
。使用
"(?:\d\s\x22)(.*?)(?=\x22)"
并检查第1组的内容以了解比赛的相关部分。