我真不打算辩白,我认为VCKBASE上有一个文章说得很对,正则表达式 是未来绝不会失落业的技能中的一种。
再说个近点的例子,大漠插件,如果你开拓过图色插件,如果你要找一个图,你去循环搞几百万次判断,我只能说你太笨了,如果你懂得用字符串函数,那么你比较聪明了,如果你懂得用正则来匹配,撇开措辞和正则库不说,那么你的插件的效率就可以遇上大漠了。
关于正则表达式,我也会发专题解释,不明白的可以持续关注我.可以先查询一下.

当然你也可以直接看这个教程,我想,这个帖子的难度不算太高。由于VBS的正则库利用起来实际上很大略。
正则库虽然大略了,但是正则表达式却不大略,我认为它很绕人,因此,我是强烈建议把VBS的字符串函数玩到火候了,再来看正则。当然,在这里,我会以实际的例子来解释正则表达式的方便之处,然后才见告你什么符号代表什么意思,以是,只要你有那么点耐心,你肯定是能学会的。
说到例子了,来吧,还是举例来解释。
给你一个字符串
str = \"大众38snd0d92hellop1s5gworld\"大众
我要让你取出d92之后的内容取出的字符到p1s5g的前一个字符为止,然后取出p1s5g后的所有字符串直到结束,末了把取出的两个字符串合并为一个字符串,并且中间加一个空格。
好了,你凭肉眼看,你知道我要让你把hello world取出来,但是假如有1000个字符,10000个字符,你还要看么?
先来一段VBS的代码,我不会太详细的解释VBS的例子,当然方法有很多,字符串函数很灵巧,我只是随手一写,写出来和正则对照字符串函数有多麻烦,你们不要看我的代码把自己看傻了。
Dim str, in1, in2, l1, l2, r1, r2
str = \公众38snd0d92hellop1s5gworld\"大众
'先找出\公众d92\"大众的和\"大众p1s5g\"大众的位置,长度也整出来。
in1 = Instr(str, \公众d92\"大众)
in2 = Instr(str, \"大众p1s5g\公众)
l1 = Len(\"大众d92\"大众)
l2 = Len(\"大众p1s5g\"大众)
'然后Mid函数就可以开工了
r1 = Mid(str, in1 + l1, in2 - in1 - l1)
r2 = Mid(str, in2 + l2, len(str) - in2 - l2 + 1)
'末了把取出的r1和r2合并一下,大功告成
ret = r1 & \公众 \公众 & r2
MsgBox ret
下面便是正则的代码了
str = \公众38snd0d92hellop1s5gworld\"大众
Dim regEx, Matches '声明一下要用到的两个玩意
set regEx = New RegExp '新建一个正则工具
regEx.Pattern = \"大众.+d92|p1s5g\"大众 '正则表达式
regEx.Global = true '全局可用性
regEx.IgnoreCase = false '区分大小写
Set Matches = regEx.Execute(str) 'Execute方法,在按键的VBS命令里有过先容的,便是将正则匹配搜索到的字符串放进一个数组里,没有多高明。
str = Replace(str, Matches(0), \公众\"大众)'更换搜索到的第一个字符串为空字符
str = Replace(str, Matches(1), \"大众 \"大众)'更换搜索到的第二个字符串为一个空格
MsgBox str
下面,紧张来说说,Pattenrn属性,也便是正则表达式了。
你可以看到regEx.Pattern = \公众.+d92|p1s5g\"大众
个中的 . 匹配除了换行符之外的任意字符
个中的 + 匹配前面的表达式多次
d92 便是我给出的条件1
个中的 | 是将.+92与p1s5g分开匹配的符号,也便是,我同时要去匹配多个字符串时,匹配每一个不同的字符串,都要用 | 来分开。
末了的p1s5g便是我给出的条件2
全体正则表达式,我用中文来讲授出来吧,希望这样能方便你理解。
搜索开始位置的任意字符直到d92结束 和 搜索全体字符串中为p1s5g的字符串
开始位置的任意字符到d92结束 为 \公众38snd0d92\公众
p1s5g便是匹配他自己了。
实行Excute方法后,就按先后顺序把搜索到的字符串放进数组了。
既然数组里有我们要的东西了,那么,就可以用replace来进行更换原有的字符串了。
现在我们比拟一下,和VBS的字符串函数比较,正则表达式去匹配这个字符串完成事情省了多少事。
VBS用字符串函数一共进行了2次查找,我想不管你用什么办法,2次查找都是不可避免的,然后进行了2次Mid获取函数,末了又操作了一次字符串合并。
如果你要处理的是一个很繁芜的字符串,比如我接下来要讲到的例子。采集网页源码。那么你用字符串函数,还须要去把稳看位置,要经由多次调试,你才能得到你想要的东西。
而正则表达式,通过一次性的匹配,通过2次replcae,就完成了我们所须要干的事了,如果你想说,VBS字符串函数同样可以通过replace来进行操作,那么我可以见告你,不管你如何操作,2次查找你是避免不了的,如果我给出的条件是n个,那么你就会杯具的创造,查找的次数便是n了,而正则表达式,无论我给出多少个条件,永久可以通过较少次数的匹配,多次更换函数,来获取到我须要的字符串。
好了,我们接着来连续吧,我接下来要举的实际例子,比如一个用户资料来作为例子。
既然是要取出他的资料,首先我们须要获取网页源码,获取网页源码的命令库已经有了,也不用我再写了。
然后,我们须要通过不雅观察网页源码来写正则表达式,右键-查看网页源文件,就可以看到了。
还是先上代码吧。
str = lib.网络.得到网页源文件(\"大众http://bbs.vrbrothers.com/forum.php?mod=viewthread&tid=285465&page=1&extra=#pid3355356\"大众)Dim regEx, Matches, Matchset regEx = New RegExp regEx.Pattern = \"大众<.+uid=606406.+class.+xi2(.+\n)+.+606406\"大众regEx.Global = trueregEx.IgnoreCase = falseSet Matches = regEx.Execute(str)str = Matches(0)regEx.Pattern = \"大众<.+cl\"大众 & chr(34) & \公众>|<[a-z]+>|<\/[a-z]+>||UID|606406\"大众Set Matches2 = regEx.Execute(str)For Each Match In Matches2If Match = \"大众\"大众 Then str = Replace(str, Match, vbCrLf)Else str = Replace(str, Match, \"大众\"大众)End IfNextMsgBox str金猪脚本(原飞猪脚本)以按键精灵传授教化为主,涉及UiBot,Python,Lua等脚本编程措辞,传授教化包括全自动办公脚本,游戏赞助脚本,引流脚本,网页脚本,安卓脚本,IOS脚本,注册脚本,点赞脚本,阅读脚本以及网赚脚本等各个领域。想学习按键精灵的朋友可以添加金猪脚本粉丝互换群:554127455 学习路上不再孤单,金猪脚本伴你一同发展.