首页 » PHP教程 » phpinstr函数技巧_按键精灵脚本开拓之若何处理字符串事半功倍正则表达式的应用

phpinstr函数技巧_按键精灵脚本开拓之若何处理字符串事半功倍正则表达式的应用

访客 2024-12-08 0

扫一扫用手机浏览

文章目录 [+]

我真不打算辩白,我认为VCKBASE上有一个文章说得很对,正则表达式 是未来绝不会失落业的技能中的一种。

再说个近点的例子,大漠插件,如果你开拓过图色插件,如果你要找一个图,你去循环搞几百万次判断,我只能说你太笨了,如果你懂得用字符串函数,那么你比较聪明了,如果你懂得用正则来匹配,撇开措辞和正则库不说,那么你的插件的效率就可以遇上大漠了。

phpinstr函数技巧_按键精灵脚本开拓之若何处理字符串事半功倍正则表达式的应用

关于正则表达式,我也会发专题解释,不明白的可以持续关注我.可以先查询一下.

phpinstr函数技巧_按键精灵脚本开拓之若何处理字符串事半功倍正则表达式的应用
(图片来自网络侵删)

当然你也可以直接看这个教程,我想,这个帖子的难度不算太高。
由于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 学习路上不再孤单,金猪脚本伴你一同发展.

相关文章

php当地署理技巧_怎么理解PHP代理模式

在前面的文章中,我们已经给大家大略先容了PHP代理模式的根本观点,相信大家对代理模式也有了一点理解。本节内容就结合详细的代码示例,...

PHP教程 2024-12-10 阅读0 评论0