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

[问题求助] [已解决]VBS正则提取(删除)指定字符串

[复制链接]
发表于 2011-5-7 17:20:27 | 显示全部楼层 |阅读模式
近日在vbs中遇到一个问题,先看代码:

  1. Dim str
  2. str = "<br>对于他来说,保护&#456贺一鸣的任务&123序列,远在烤鱼之上,既然贺一&#11111990;鸣脱离了他的视&#o39;伐范围,那么他就必须最上去。</br>"
  3. MsgBox RegTest(str, "<br>([^&#.*;]+)</br>")

  4. Function RegTest(vbstr, pattern)
  5.   dim regEx, Matches, Match, regstr
  6.   set regEx = New RegExp
  7.   regEx.Pattern = pattern
  8.   regEx.Global = true
  9.   regEx.IgnoreCase = false
  10.   set Matches = regEx.execute(vbstr)
  11.   for each Match in Matches
  12.     regstr = regstr & Match.value
  13.   Next
  14.   RegTest = regstr
  15. End Function
复制代码
我的原意是去掉str两头的标签以及以$#打头并以;结束的字符串(在例子中为&#11111990;和&#o39;),但搞了n久都没有成功,特来请教大家,还望知道的不吝赐教于我,先在此表示感谢了!

又仔细看了正则的资料并转换了思路,成功解决,代码如下:

  1. Dim str
  2. str = "<br>对于他来说,保护&#456贺一鸣的任务&123序列,远在烤鱼之上,既然贺一&#11111990;鸣脱离了他的视&#o39;伐范围,那么他就必须最上去。</br>"
  3. MsgBox RegTest(str, "([<br>/]|&#.[0-9]+;)")

  4. Function RegTest(vbstr, pattern)
  5.   dim regEx, Matches, Match
  6.   set regEx = New RegExp
  7.   regEx.Pattern = pattern
  8.   regEx.Global = true
  9.   regEx.IgnoreCase = false
  10.   set Matches = regEx.Execute(vbstr)
  11.   for each Match in Matches
  12.     vbstr = Replace(vbstr, Match, "")
  13.   Next
  14.   RegTest = vbstr
  15. End Function
复制代码
发表于 2011-5-7 19:33:09 | 显示全部楼层
是提取中文字符吗?
  1. (?:[^>]*(?=[$])|[^0-9#&a-zA-Z<>;/]*)
复制代码
 楼主| 发表于 2011-5-7 19:45:28 | 显示全部楼层
2# asnahu
不是的,提取后为:
对于他来说,保护&#456贺一鸣的任务&123序列,远在烤鱼之上,既然贺一鸣脱离了他的视伐范围,那么他就必须最上去。
发表于 2011-5-7 19:52:08 | 显示全部楼层
这样呢?
  1. (?:[^>;]*(?=&)|(?!=[0-9];)[^;</>a-z0-9#]*)
复制代码
发表于 2011-5-7 21:06:33 | 显示全部楼层
为什么不直接用正则自己的Replace:
regEx.Pattern = "<\/?[^<>]+>|&#[^&#;]+;"
regEx.Replace(vbstr, "")
 楼主| 发表于 2011-5-7 22:22:38 | 显示全部楼层
5# powerbat
有区别吗?
发表于 2011-5-7 22:31:46 | 显示全部楼层
对正则来说,你调用的那个Replace()函数是“第三方”,更何况用它自己的更方便(至少代码简省一些)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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