除非注明,文章均为 战战如疯 原创,转载请保留链接: http://www.zhanzhanrufeng.com/cat3/462.html,VBA交流群273624828。
上节介绍了正则表达式的基本用法,手上有一个现成的提取邮箱的例子先拿来让大家看一下。要下载的是天涯论坛http://bbs.tianya.cn/post-766-99240-11.shtml这个帖子回复中的邮箱地址。这种情况比较常见,经常有网友的论坛上分享一些资源,让需要的网友留下邮箱,如果太多了提取邮箱就是个问题,这次拿这个例子来说明一下。
这个网页当然是要先网抓把内容抓出来,再用正则表达式将邮箱地址取出来,邮箱匹配模式是"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*",具体意思对照正则表达式的规则自己慢慢研究,这是网友们长期总结下来的一个方法,我也是直接拿来就用了。下面看代码
Sub test()
Dim winhttp As Object, tt$, reg As Object, m, mc, i, brr
Set winhttp = CreateObject("WinHttp.WinHttpRequest.5.1")
Set reg = CreateObject("VBSCRIPT.REGEXP")
With winhttp
.Open "GET", "http://bbs.tianya.cn/post-766-99240-11.shtml", False
tt = .responsetext
End With
With reg
.Global = True
.IgnoreCase = True
.Pattern = "\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"
End With
Set mc = reg.Execute(tt)
ReDim brr(1 To mc.Count)
For i = 0 To mc.Count - 1
brr(i + 1) = mc.Item(i).Value
Next
Range("a1").Resize(mc.Count, 1) = Application.Transpose(brr)
Set winhttp = Nothing
Set reg = Nothing
End Sub
正则表达式的Execute方法就是将所有符合匹配模式的字符串放到一个对象mc中,不是数组但是差不多的意思,取mc中某个项的值要用mc.item(i).value。
这个例子先看着,之后我会慢慢补充些正则表达式的内容。
这节没附件,自己复制代码就好了。
联系客服