关于正则表达式的问题

fooltutu 2008-09-01 10:58:43
Private Sub Command1_Click()

Dim re As RegExp
Dim mh As Match
Dim mhs As MatchCollection
Dim inpStr As String

inpStr = "我的E-mail: lucky@163.com 。欢迎致电!"
Set re = New RegExp
re.Pattern = "(w+)@(w+).(w+)" '同样是匹配地址,注意和上例的不同
Set mhs = re.Execute(inpStr)
Set mh = mhs(0) '只有一个匹配
Debug.Print "电子邮件地址是: " & mh.Value '这里是匹配的内容
Debug.Print "用户名是: " & mh.SubMatches(0) '第一个括号中的内容
Debug.Print "邮箱是: " & mh.SubMatches(1) '第二个括号中的内容
Debug.Print "域名是:   " & mh.SubMatches(2) '第三个括号中的内容

End Sub



我在学习正则表达式,这是从网上找的一段学习教材.可是到"Set mh = mhs(0) '只有一个匹配
"出错,说是无效的过程调用或参数
这是怎么回事?要怎么解决呢?
...全文
57 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lsftest 2008-09-02
  • 打赏
  • 举报
回复
你的Pattern根本不能提取到电子邮件信息,自然出错。试试:
re.Pattern = "\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"
fooltutu 2008-09-01
  • 打赏
  • 举报
回复
帮忙看一下啊
yachong 2008-09-01
  • 打赏
  • 举报
回复
可能资料写错了吧
感觉应该是
Private Sub Command1_Click()

Dim re As RegExp
Dim mh As Match
Dim mhs As MatchCollection
Dim inpStr As String

inpStr = "lucky@163.com"
Set re = New RegExp
re.Pattern = "(\w+)@(\w+).(\w+)" '同样是匹配地址,注意和上例的不同
Set mhs = re.Execute(inpStr)
Set mh = mhs(0) '只有一个匹配
Debug.Print "电子邮件地址是: " & mh.Value '这里是匹配的内容
Debug.Print "用户名是: " & mh.SubMatches(0) '第一个括号中的内容
Debug.Print "邮箱是: " & mh.SubMatches(1) '第二个括号中的内容
Debug.Print "域名是:   " & mh.SubMatches(2) '第三个括号中的内容
End Sub
fvflove 2008-09-01
  • 打赏
  • 举报
回复

Set mh = mhs(0) '只有一个匹配

'改一下:

For Each mh In mhs
Debug.Print "电子邮件地址是: " & mh.Value '这里是匹配的内容
Debug.Print "用户名是: " & mh.SubMatches(0) '第一个括号中的内容
Debug.Print "邮箱是: " & mh.SubMatches(1) '第二个括号中的内容
Debug.Print "域名是:   " & mh.SubMatches(2) '第三个括号中的内容
Next

'可能是没有找到数据.所以用 mhs(0) 会出现错误.
'

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧