Board logo

标题: [问题求助] 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

  1. Dim ip_str, ip_addr, re, ms, m
  2. ip_str = "sfsdfasdfsd 192.168.1.1 dfsdfsdfsdfsad"
  3. Set re = New RegExp
  4. re.Global = True
  5. 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])"
  6. Set ms = re.Execute(ip_str)
  7. For Each m In ms
  8.     WScript.Echo m
  9. Next
复制代码

作者: aigol    时间: 2011-12-29 21:36

回复 2# Demon

   很严谨!!
   感谢!!!
  看了您的Blog很强大,有机会再向您讨教!
作者: aigol    时间: 2012-1-2 10:48

回复 2# Demon

首先感谢Demon赐教!
同时祝各位大侠,新年快乐!

这两天把这个应用扩展了一下,但是数组赋值的问题让我头疼了(确切的是失眠了!)
最终还是http://demon.tw/  参考了几篇文章后解决了。




最后,还是对数组赋值的问题,请教下,不明白啊!不明白!(小白都这样吧^^)
第一种,直接for循环赋值,报错:


第二种,先数组赋值,再for循环赋值,结果ok!

作者: powerbat    时间: 2012-1-2 12:07

这么基础的问题,为什么让你头疼呢?走路都没学过,就想跑,注定要摔跟头。
看别人的Blog很强大,是因为别人把基础掌握牢固了,才能应用自如。
去教学资料区多看看的。
作者: Demon    时间: 2012-1-2 12:59

  1. Function GetIP(path)
  2.     Dim fso, re, str, ms, i, a()
  3.     Set fso = CreateObject("Scripting.FileSystemObject")
  4.     Set re = New RegExp
  5.    
  6.     re.Global = True
  7.     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])"
  8.    
  9.     str = fso.OpenTextFile(path).ReadAll
  10.    
  11.     Set ms = re.Execute(str)
  12.     ReDim a(ms.Count - 1)
  13.    
  14.     For i = 0 To ms.Count - 1
  15.         a(i) = ms.Item(i)
  16.     Next
  17.    
  18.     GetIP = a
  19. End Function
复制代码

作者: aigol    时间: 2012-1-7 00:36

回复 5# powerbat

感谢!
作者: aigol    时间: 2012-1-7 00:39

回复 6# Demon
感谢!Demon !!!




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2