7,765
社区成员
发帖
与我相关
我的任务
分享
Public Function ReturnRegExStr(ByVal FromStrs As String) As String
On Error Resume Next
Dim bPatrn As String, w1 As String, w2 As String ' 创建变量。
Dim regEx As New RegExp, Match, Matches
bPatrn = "((http|https|ftp|rtsp|mms):(\/\/|\\\\)((\w)+[.]){1,}([a-z]{1,3}|[0-9]{1,3})(((\/[\~]*|\\[\~]*)(\w)+)|[.](\w)+)*(((([?](\w)+){1}[=]*))*((\w)+){1}([\&](\w)+[\=]((\w)+|-|%|\+|\#|(\w)+)*)*))"
' bPatrn = "\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"
' bPatrn = "http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?"
regEx.Pattern = bPatrn '设置模式。'"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"'
regEx.IgnoreCase = True '设置是否区分大小写。
regEx.Global = True '设置全程匹配。
Set Matches = regEx.Execute(FromStrs) '执行搜索。
w1 = ""
If Matches.Count < 1 Then Exit Function
For Each Match In Matches '循环遍历Matches集合。
w2 = Trim(Match.Value)
If w2 <> "" Then
w1 = w1 & IIf(w1 <> "", vbCrLf, "") & w2
End If
Next
ReturnRegExStr = w1 '返回所有值
End Function
Sub Test()
Dim w1 As String
w1 = "wofw我们http://www.baidu.com?id=1&g=3-dfgkl,请访问www.baidu.com,或者sfkhttp://www.baidu.com/s?bs=%CC%EC%C6%F8%D4%A4%B1%A8%B2%E9%D1%AFreye&f=8&wd=%CC%EC%C6%F8%D4%A4%B1%A8%B2%E9%D1%AF"
Debug.Print ReturnRegExStr(w1)
'''应该返回下面3个地址:----但结果是错误的!!!
'''1、http://www.baidu.com?id=1&g=3
'''2、www.baidu.com
'''3、http://www.baidu.com/s?bs=%CC%EC%C6%F8%D4%A4%B1%A8%B2%E9%D1%AFreye&f=8&wd=%CC%EC%C6%F8%D4%A4%B1%A8%B2%E9%D1%AF
End Sub
((?:http|https|ftp|rtsp|mms)://)?([\w-]+\.)+[\w-]+((/|\?|/\?)[\w- \./\?%&=]*)?
((?:http|https|ftp|rtsp|mms)://)?([\w-]+\.)+[\w-]+((/|\?|/\?)[\w-\./\?%&=]*)?
Private Sub Form_Load()
Dim w1 As String, ss() As String, i As Long, j As Long
w1 = "wofw我们http://www.baidu.com?id=1&g=3-dfgkl,请访问www.baidu.com,或者sfkhttp://www.baidu.com/s?bs=%CC%EC%C6%F8%D4%A4%B1%A8%B2%E9%D1%AFreye&f=8&wd=%CC%EC%C6%F8%D4%A4%B1%A8%B2%E9%D1%AF"
ss = Split(w1, "www.")
For i = 1 To UBound(ss)
j = IIf(InStr(ss(i), ",") > 0, InStr(ss(i), ","), InStr(ss(i), ","))
If j = 0 Then j = Len(ss(i)) + 1
ss(i) = Left(ss(i), j - 1)
ss(i) = Replace(ss(i), "-dfgkl", "")
Debug.Print "http://" & ss(i)
Next
End Sub