VBS 中的模式匹配
Pattern matching in VBS
以此为参考:https://msdn.microsoft.com/en-us/library/ms974570.aspx#scripting05_topic2
我一直在努力弄清楚如何创建一个模式来拉这个:
LicenseDetail.asp?SID=&id=F1A32D21A83C2BB2BBF227E5443A6023
其中:
height='40'><td colspan='1' width='20%' align='center'bgcolor='#e9edf2'><font face=verdana color=#000000 size=-1>Real Estate Broker or Sales</font></td><td colspan='1' align='center' bgcolor='#e9edf2'><font face=verdana color=#000000 size=-1><a href='LicenseDetail.asp?SID=&id=F5A76372AAA358B9CD869630255FA424'>ALMEIDA, JOHN SOBRAL</a></font></td
我尝试了很多不同的组合,但我什至都不接近...
例如,根据我正在阅读的内容,似乎 () 应该抓取文字,而 \alphanumeric 应该抓取尾随数字和字母并在 ' 之前停止(因为它不是数字或字母)。 ..失败:
"(LicenseDetail.asp?SID=&id=)\alphanumeric"
提前致谢。
(1) 重新阅读语法细节(例如“\alpanumeric”)
(2) 搜索 "LicenseDetail" + "everthing not a '"
在代码中:
Dim s : s = "height='40'><td colspan='1' width='20%' align='center'bgcolor='#e9edf2'><font face=verdana color=#000000 size=-1>Real Estate Broker or Sales</font></td><td colspan='1' align='center' bgcolor='#e9edf2'><font face=verdana color=#000000 size=-1><a href='LicenseDetail.asp?SID=&id=F5A76372AAA358B9CD869630255FA424'>ALMEIDA, JOHN SOBRAL</a></font></td"
Dim r : Set r = New RegExp
r.Pattern = "LicenseDetail[^']+"
Dim m : Set m = r.Execute(s)
If 1 = m.Count Then
WScript.Echo m(0).Value
Else
WScript.Echo "Bingo!"
End If
输出:
LicenseDetail.asp?SID=&id=F5A76372AAA358B9CD869630255FA424
更新评论:
我不知道引号在遇到文件时会变成双引号,但我知道为什么 [^"]
'does not work':在 VBScript 中," 字符串文字被 " 转义。在代码中:
>> s = "name=""escapedquote"""
>> Set r = New RegExp
>> r.Pattern = """"
>> WScript.Echo s, r.Replace(s, "'")
>>
name="escapedquote" name='escapedquote"
>>
(转到 here 查看正则表达式模式操作中的否定(双)引号。)
以此为参考:https://msdn.microsoft.com/en-us/library/ms974570.aspx#scripting05_topic2
我一直在努力弄清楚如何创建一个模式来拉这个:
LicenseDetail.asp?SID=&id=F1A32D21A83C2BB2BBF227E5443A6023
其中:
height='40'><td colspan='1' width='20%' align='center'bgcolor='#e9edf2'><font face=verdana color=#000000 size=-1>Real Estate Broker or Sales</font></td><td colspan='1' align='center' bgcolor='#e9edf2'><font face=verdana color=#000000 size=-1><a href='LicenseDetail.asp?SID=&id=F5A76372AAA358B9CD869630255FA424'>ALMEIDA, JOHN SOBRAL</a></font></td
我尝试了很多不同的组合,但我什至都不接近...
例如,根据我正在阅读的内容,似乎 () 应该抓取文字,而 \alphanumeric 应该抓取尾随数字和字母并在 ' 之前停止(因为它不是数字或字母)。 ..失败: "(LicenseDetail.asp?SID=&id=)\alphanumeric"
提前致谢。
(1) 重新阅读语法细节(例如“\alpanumeric”)
(2) 搜索 "LicenseDetail" + "everthing not a '"
在代码中:
Dim s : s = "height='40'><td colspan='1' width='20%' align='center'bgcolor='#e9edf2'><font face=verdana color=#000000 size=-1>Real Estate Broker or Sales</font></td><td colspan='1' align='center' bgcolor='#e9edf2'><font face=verdana color=#000000 size=-1><a href='LicenseDetail.asp?SID=&id=F5A76372AAA358B9CD869630255FA424'>ALMEIDA, JOHN SOBRAL</a></font></td"
Dim r : Set r = New RegExp
r.Pattern = "LicenseDetail[^']+"
Dim m : Set m = r.Execute(s)
If 1 = m.Count Then
WScript.Echo m(0).Value
Else
WScript.Echo "Bingo!"
End If
输出:
LicenseDetail.asp?SID=&id=F5A76372AAA358B9CD869630255FA424
更新评论:
我不知道引号在遇到文件时会变成双引号,但我知道为什么 [^"]
'does not work':在 VBScript 中," 字符串文字被 " 转义。在代码中:
>> s = "name=""escapedquote"""
>> Set r = New RegExp
>> r.Pattern = """"
>> WScript.Echo s, r.Replace(s, "'")
>>
name="escapedquote" name='escapedquote"
>>
(转到 here 查看正则表达式模式操作中的否定(双)引号。)