[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[问题求助] vbs的正则表达式 可以把匹配的内容赋值给 变量吗?

例如:
dim ip_str,ip_addr
ip_str="sfsdfasdfsd 192.168.1.1 dfsdfsdfsdfsad"  
不规律的字符串ip_str中,有IP地址,要把IP提取出来赋值给 ip_addr

正则不行的话,有其它方法实现?

请赐教!!!
谢!

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

TOP

回复 5# powerbat

感谢!

TOP

  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
复制代码

TOP

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

TOP

回复 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)

TOP

回复 2# Demon

   很严谨!!
   感谢!!!
  看了您的Blog很强大,有机会再向您讨教!

TOP

  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
复制代码

TOP

返回列表