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 查看正则表达式模式操作中的否定(双)引号。)