[山海教程]Lua里面的正则-模式匹配(2)

 

现在越来越多的人都偏向于开发安卓按键精灵的脚本,对于安卓按键的命令需求也越来越多,有一些命令是按键本身不具备或者是不够完善,所以特此推出最强LUA插件-山海插件,以供同学们可以更好的开发自己的脚本。...





[山海插件教程-第二十课]

LUA里面的正则—模式匹配(2)

插件的起源

      现在越来越多的人都偏向于开发安卓按键精灵的脚本,对于安卓按键的命令需求也越来越多,有一些命令是按键本身不具备或者是不够完善,所以特此推出最强LUA插件-山海插件,以供同学们可以更好的开发自己的脚本。



本节内容介绍

      在上一篇中带大家初步的了解了lua的模式匹配,今天就让我们一起来进一步的去了解下模式匹配的表达式的实际应用

》》[山海教程]LUA里面的正则-模式匹配(1)

接下来介绍下模式匹配中会用到的一些符号:

( ) 括号
括号就是用来捕获你需要提取出来的内容。

在一个匹配表达式中可能有只有一小部分是你需要提取出来的,所以就需要把这部分单独的用括号包括起来,这样在使用命令的时候就会专门把这段内容提取出来。

我们来看下一个范例:

Import "shanhai.lua"

//从字符串中单独提取出网络ip的地址

Dim text = "网络ip来自:117.25.63.155,本地ip:192.168.1.1"

dim RegexArr = shanhai.RegexFind(text,"网络ip来自:(%d+%.%d+%.%d+%.%d+)")

For Each v In RegexArr

TracePrint v

Next

我们具体的来看下匹配的表达式:

网络ip来自:(%d+%.%d+%.%d+%.%d+)

在原字符串中网络的ip前面有个特征就是“网络ip来自:”, 所以在表达式中需要带上它,后面%d+%.%d+%.%d+%.%d+这段则是用来提取ip地址的,%d+ 在上一篇教程中已经说过了是用来提取数字的。

那这个 %. 又是什么意思呢?我们之前教程中说过,“ . ” 这个在模式匹配里代表着匹配所有字符,所以我们如果要想匹配字符串中的这个点的话,就必须要在这个符号前加上%,这样就表示把这个点当成是普通的字符来进行匹配,而不是特殊的字符。

最后的括号就表示我只把括号里的内容提取出来,其他的内容不要,所以“网络ip来自:(%d+%.%d+%.%d+%.%d+)” 这个表达式提取之后的内容就是“117.25.63.155”

有兴趣的同学可以自己试着看看吧括号给去掉之后是什么样的结果~~
[] 中括号
中括号在表达式中表示匹配一个集合,里面的内容可以是一个单独的字符,也可以是一个范围。

比如:

[p] 这就表示匹配包含字母p的字符(其实也就是直接匹配字符p);

[psd] 这个就可以表示匹配包含字母p或者字母s或者字母d的字符;

[a-z] 这样就是范围匹配,范围开始-范围结束,范围中间使用“-”符号进行连接。这个就是表示匹配a到z的字母;

[0-9] 这样表示匹配0到9的数字;

[^] 中括号里加个“^” 符号就和刚才的[]相反。这个表示匹配中括号里的补集,也就是不匹配中括号内的字符或者字符集;

[^p] 这样就表示不匹配字母p。

范例:

Import "shanhai.lua"

Dim text = "sdfpppqwe"

dim RegexArr = shanhai.RegexFind(text,"[^p]+")

For Each v In RegexArr

TracePrint v

Next

这样就是排除了字母p,匹配到了字母p以外其他的字符。

小括号和中括号是在模式匹配中很常用到的一些办法,大家要灵活的去应用他们的组合。范例:

Import "shanhai.lua"

Dim text = "提取:这里是想要提取的内容123456"

dim RegexArr = shanhai.RegexFind(text,"提取:([^


    关注 按键精灵


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册