标题: [问题求助] vbs的正则表达式 可以把匹配的内容赋值给 变量吗? [打印本页]
作者: aigol 时间: 2011-12-29 20:33 标题: vbs的正则表达式 可以把匹配的内容赋值给 变量吗?
例如:
dim ip_str,ip_addr
ip_str="sfsdfasdfsd 192.168.1.1 dfsdfsdfsdfsad"
不规律的字符串ip_str中,有IP地址,要把IP提取出来赋值给 ip_addr
正则不行的话,有其它方法实现?
请赐教!!!
谢!
作者: Demon 时间: 2011-12-29 21:17
- Dim ip_str, ip_addr, re, ms, m
- ip_str = "sfsdfasdfsd 192.168.1.1 dfsdfsdfsdfsad"
- Set re = New RegExp
- re.Global = True
- re.Pattern = "((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[09][0-9]|[1-9][0-9]|[0-9])"
- Set ms = re.Execute(ip_str)
- For Each m In ms
- WScript.Echo m
- Next
复制代码
作者: aigol 时间: 2011-12-29 21:36
回复 2# Demon
很严谨!!
感谢!!!
看了您的Blog很强大,有机会再向您讨教!
作者: aigol 时间: 2012-1-2 10:48
回复 2# Demon
首先感谢Demon赐教!
同时祝各位大侠,新年快乐!
这两天把这个应用扩展了一下,但是数组赋值的问题让我头疼了(确切的是失眠了!)
最终还是http://demon.tw/ 参考了几篇文章后解决了。
- function get_ip(iptxt_path)'txt文档中提取IP地址
- Dim ip_str, re, ms, m, i,tmp
- Dim fso, regex, str
- Set fso = CreateObject("Scripting.FileSystemObject")
- ip_str = fso.OpenTextFile(iptxt_path).ReadAll
- Set re = New RegExp
- re.Global = True
- re.MultiLine = True
- re.Pattern = "((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[09][0-9]|[1-9][0-9]|[0-9])"
- Set ms = re.Execute(ip_str)
- i=0
- tmp = "Array("
- For Each m In ms
- tmp = tmp & """" & m & ""","
- i = i + 1
- Next
- get_ip =Eval(Left(tmp, Len(tmp) - 1) & ")")
- end function
最后,还是对数组赋值的问题,请教下,不明白啊!不明白!(小白都这样吧^^)
第一种,直接for循环赋值,报错:
- dim a
- for i = 0 to 2
- a(i) = i
- next
- msgbox a(0)
第二种,先数组赋值,再for循环赋值,结果ok!
- dim a
- a = array(0,0,0)
- for i = 0 to 5
- a(i) = i
- next
- msgbox a(0)
作者: powerbat 时间: 2012-1-2 12:07
这么基础的问题,为什么让你头疼呢?走路都没学过,就想跑,注定要摔跟头。
看别人的Blog很强大,是因为别人把基础掌握牢固了,才能应用自如。
去教学资料区多看看的。
作者: Demon 时间: 2012-1-2 12:59
- Function GetIP(path)
- Dim fso, re, str, ms, i, a()
- Set fso = CreateObject("Scripting.FileSystemObject")
- Set re = New RegExp
-
- re.Global = True
- re.Pattern = "((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[09][0-9]|[1-9][0-9]|[0-9])"
-
- str = fso.OpenTextFile(path).ReadAll
-
- Set ms = re.Execute(str)
- ReDim a(ms.Count - 1)
-
- For i = 0 To ms.Count - 1
- a(i) = ms.Item(i)
- Next
-
- GetIP = a
- End Function
复制代码
作者: aigol 时间: 2012-1-7 00:36
回复 5# powerbat
感谢!
作者: aigol 时间: 2012-1-7 00:39
回复 6# Demon
感谢!Demon !!!
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |