找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 23674|回复: 7

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

[复制链接]
发表于 2011-12-29 20:33:54 | 显示全部楼层 |阅读模式
例如:
dim ip_str,ip_addr
ip_str="sfsdfasdfsd 192.168.1.1 dfsdfsdfsdfsad"  
不规律的字符串ip_str中,有IP地址,要把IP提取出来赋值给 ip_addr

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

请赐教!!!
谢!
发表于 2011-12-29 21:17:02 | 显示全部楼层

  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
复制代码
 楼主| 发表于 2011-12-29 21:36:38 | 显示全部楼层
回复 2# Demon

   很严谨!!
   感谢!!!
  看了您的Blog很强大,有机会再向您讨教!
 楼主| 发表于 2012-1-2 10:48:31 | 显示全部楼层
回复 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)
发表于 2012-1-2 12:07:45 | 显示全部楼层
这么基础的问题,为什么让你头疼呢?走路都没学过,就想跑,注定要摔跟头。
看别人的Blog很强大,是因为别人把基础掌握牢固了,才能应用自如。
去教学资料区多看看的。
发表于 2012-1-2 12:59:10 | 显示全部楼层

  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
复制代码
 楼主| 发表于 2012-1-7 00:36:07 | 显示全部楼层
回复 5# powerbat

感谢!
 楼主| 发表于 2012-1-7 00:39:30 | 显示全部楼层
回复 6# Demon
感谢!Demon !!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 07:27 , Processed in 0.010113 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表