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

软件版本: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» / 18
发新话题 回复该主题

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

1#
小伙伴们大家好~之前的山海插件教程中给大家介绍了一个正则匹配的命令,大家响应热情很高呀~~ 鉴于一些小伙伴对于lua的正则不太了解,所以这里会专门给大家讲解下lua的正则匹配的用法。

>>>> 插件教程目录 <<<<

其实确切的说,lua的正则匹配是被称为“模式匹配”,它只是遵从了部分的正则匹配的语法规则,并不是标准的正则表达式,但是也足够我们平时的使用了~~所以大家放心

如果对于标准正则表达式感兴趣的话可以查看之前写过的PC的正则表达式教程贴:
只要10行代码!从上万行文本中提取任意想要的信息
万千军中直取首级的正则进阶,想不想学
正则实战——轻松完成论坛贴吧一键登录签到

先上个简单的例子,来讲解下为什么要用模式匹配
常规的字符串提取方法:
  1. //从字符串中提取出连续的数字
  2. Dim text = "验证码:123456,如非本人操作,请忽略本短信。"
  3. Dim tstr = ""
  4. Dim num = ""
  5. For i = 1 To Len(text)
  6. tstr = mid(text, i, 1)
  7. If IsNumeric(tstr) Then
  8. num = num & tstr
  9. End If
  10. Next
  11. TracePrint num
复制代码
模式匹配提取:
  1. Import "shanhai.lua"

  2. Dim text = "验证码:123456,如非本人操作,请忽略本短信。"
  3. dim RegexArr = shanhai.RegexFind(text,"%d+")
  4. For Each v In RegexArr
  5. TracePrint v
  6. Next
复制代码
这是个很小很简单的范例,从这个对比例可以看出,用模式匹配来提取字符串简直不要太轻松!!
不需要什么麻烦的遍历、判断、字符链接,直接就能提取出来。


lua的模式匹配其实就是用某些特定的字符来表示一系列的字符,所以让我们先来认识下这些特殊的字符

. 可表示任何字符
%a 表示任何字母
%c 表示任何控制字符
%d 表示任何数字
%g 表示任何除空白符外的可打印字符
%l 表示所有小写字母
%p 表示所有标点符号
%s 表示所有空白字符
%u 表示所有大写字母
%w 表示所有字母及数字
%x 表示所有 16 进制数字符号

以上就是模式匹配中的特定的字符了。看上去这么多,其实平时常用的就是%w、%d、%a之类的

除了特定的字符以为,还有用来表达匹配次数的字符
* 将匹配零或多个该类的字符。 这个条目总是匹配尽可能长的串
+ 将匹配一或更多个该类的字符。 这个条目总是匹配尽可能长的串
- 将匹配零或更多个该类的字符。 和 '*' 不同, 这个条目总是匹配尽可能短的串
将匹配零或一个该类的字符。 只要有可能,它会匹配一个


知道了这些特定的字符,我们再回过头来看下上面的例子是怎么实现提取字符的。具体的命令参数就不复述了,大家可以看之前的帖子:【山海插件教程】万中取一的正则匹配
其中关键的地方就是匹配的表达式: %d+

根据上面的特定字符表格,我们可以知道 %d 就是匹配数字,+ 则是匹配前一个字符一次或者多次。那上面这个表达式我们就可以翻译成:
匹配字符串中的数字一次或者多次。(白话就是:把字符串中的数字都找出来)

而在上述的代码中只有“123456”是数字,所以就可以顺利的把数字都匹配出来了。

怎么样,看了这篇教程是不是对lua的模式匹配有了初步的了解了?之后我们还会再进一步的去了解lua的模式 匹配


最后编辑quitout 最后编辑于 2016-07-25 21:52:26
本主题由 超级版主 瑞祥幽冥狼 于 2023/10/6 17:42:17 执行 审核帖子 操作
2#

lua的模式匹配其实也挺简单的 因为什么呢, 因为山海师是好人呗

3#

回复 2楼zjcyjj的帖子

其实……我是个好人

4#

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

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

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

6#

支持一下

按键精灵安卓版2.5.0即将发布,将带给你更好的编辑体验!点击链接了解新版本功能,还有更多好礼等你来拿哦!
http://bbs.anjian.com/showtopic-584866.aspx
7#

支持一下!

8#

888888888888888888888888888888888

9#

苏打粉

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

3QQQQQQQQQQQQQQQQQQQQQQQQQ

11#

顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶

12#

刚好需要用正则

13#

学习一下

14#

很难啊

15#

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

16#

谢谢指教了。。。。。。。

17#

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

18#


19#

满足我的要求了 .

20#

太牛B了。看一下。

发新话题 回复该主题