【发布时间】:2014-02-11 14:45:11
【问题描述】:
我不断收到错误:正则表达式中的语法错误。我已经使我的正则表达式模式变得更简单,更容易尝试解决我对导致问题的猜测。我现在卡住了。
这是模式:(?<=\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 不支持的lookbehind。任何人都可以提出一个匹配预期目标且仅匹配预期目标的模式吗?
【问题讨论】:
-
您最后的评论是正确的,不允许使用量词。 RegEx 本身很好,对我有用。可能跟转义或vbscript not supporting lookbehinds有关?