• 按键公众号 :
按键精灵电脑版
立即下载

软件版本:2014.06
软件大小:22.9M
更新时间:2021-12-03

按键精灵安卓版
立即下载

软件版本:3.7.2
软件大小:46.2M
更新时间:2023-05-10

按键精灵iOS版
立即下载

软件版本:1.8.0
软件大小:29.2M
更新时间:2023-03-21

按键手机助手
立即下载

软件版本:3.8.0
软件大小:262M
更新时间:2023-05-30

快捷导航

登录 后使用快捷导航
没有帐号? 注册

返回列表 12345678» / 10
发新话题 回复该主题

[教程心得] 【山海插件教程】LUA的正则——模式匹配(3) [复制链接]

1#
通过之前两篇教程我们初步了解了lua模式匹配的一些使用方法,那今天的教程我们就来走进实战,给大家介绍下载分析表达式的时候常用的一些方法


我们先来分析之前的帖子里的例子:【山海插件教程】万中取一的正则匹配

首先,要从复杂的字符中提取特定文字,得对这字符进行初步的分析,我们先来把重要的部分单独拿出来看下:

您所在的用户组无法下载或查看附件

提取关键信息
可以发现在这段字符里关键的部分是“社区"这个是我们要找的文字,"[360,74][506,138]"这个则是我们要提取出来的坐标。
这两个就是关键信息,就是我们需要提取或者使用到的信息,接下来就是要分析规律

找到关键信息的规律
要写表达式我们就得学会找关键信息的规律。通过查看图中的部分,很容易就能观察到关键信息的特征:
要找的文字的前面都是有跟着:“text=”这样的字符
要找的坐标的前面都是有跟着:“bounds=” 这样的字符
除了这两个关键的地方以外的其他字符,我们都用不到,我们就可以用表达式来替换掉。

替换表达式
我们找到了规律之后,来看下该如何写表达式。通过上一步的分析可以发现从“text=”开始到“bounds=”之间的这段字符我们完全不需要,所以我们就用模式匹配的表达式给代替掉。
那该用什么表达式呢??
我们需要替换掉的是一连串的所有字符,所以我们可以用这种表达式:“ .+ ”。之前教程有说过了,点代表所有字符,而加号则代表匹配前一个字符多次。那这个表达式也就是用来匹配所有字符了


那到了这一步,我们就可以把表达式写出来了:
“text="社区".+bounds=[360,74][506,138]”


那这样就结束了吗?不!还差一点。我们要提取的信息是未知的,所以我们得要把这些未知的信息单独提取出来

bounds=[360,74][506,138] 想要分别提取出坐标数字:bounds=%[(.-)%] %[(.-)%]

%[(.-)%] 这个就是用来提取中括号里的字符。在之前的教程里我们说过,中括号是代表了匹配一个集合,那如果想要匹配中括号本身这个字符的话就需要在前面加上一个%符号来转义。
而(.-)就表示匹配任意字符多次,和加号相比是会匹配尽可能短的串。

当然上面这个表达式我们也可以使用 bounds=%[([^%]])%]%[([^%]])%] 来代替。就当是留了作业,同学们可以自己思考下为什么可以用这个表达式来匹配。


接下来,我们再来做一个简单的小练习~~~


【山海插件教程】插件教程索引帖
在这个帖子中把图中的这些标题内容提取出来:

您所在的用户组无法下载或查看附件


代码如下:
  1. Import "shanhai.lua"

  2. Dim html = url.Get("http://bbs.anjian.com/showtopic-630523-1.aspx")

  3. dim RegexArr = shanhai.RegexFind(html,"<font size=""3"">([^<]+)</font>")
  4. For Each v In RegexArr
  5. TracePrint v
  6. Next
复制代码


希望大家能在回复查看答案代码前先把你自己的方法附上,表达式是需要靠练习才能进行提升的熟练度。希望大家能在这些初级教程的基础上慢慢的联系来掌握lua模式匹配的使用方法~~


本主题由 超级版主 瑞祥幽冥狼 于 2023/10/16 22:47:34 执行 审核帖子 操作
2#

000000000000

3#

回复啊回复学习啊学习

4#

正则还有第三篇 更新的很快哦 这种速度

    已有1评分我要评分查看所有评分

    5#


    承接各类游戏脚本,办公,手游,页游,android,los等
    QQ: 523890679 微信:523890679
    6#

    学习一下

    7#

    按键精灵论坛 » ≡ 热门推荐专区 ≡ » 按键精灵手机版 » 【山海插件教程】LUA的正则——模式匹配(3) » 回复主题

    欢迎,tsurumaru
    小学五年级
    积分:91
    退出
    回复主题
    (可选) 标题最多为60个字符,还可输入60

    8#

    学习了学习

    9#


    10#

    【山海插件教程】LUA的正则——模式匹配(

    [url=http://bbs.anji
    11#

    ASD SAD

    蛋蛋接单 成就精品 qq:960964835
    12#

    123123123

    蛋蛋接单 成就精品 qq:960964835
    13#

    ffffffffffffffffffffffffffffffffffffff

    14#

    回复 1楼quitout的帖子

    "shanhai.lua"更新了这个用不了

    [url=http://bbs.anji
    15#

    疯狂动物城

    16#

    RE:【山海插件教程】LUA的正则——模式匹配(3)修改

    17#

    RE:【山海插件教程】LUA的正则——模式匹配(3)修改
    RE:【山海插件教程】LUA的正则——模式匹配(3)修改

    18#

    学习一下,这个牛逼

    19#


    20#

    111111111111111111111111111111111111111111111111

    发新话题 回复该主题