[山海教程]万中取一之正则匹配

 

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





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

万中取一之正则匹配

插件的起源

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



本节内容介绍

    之前一篇教程我们学习了通过获取界面XML来定位特征的方法:不靠图色照样识别界面。但是大家肯定注意到了,在提取坐标信息的时候使用的方法实在是太麻烦了,一个个去遍历查找,头都要大了,那有没有更简单轻松的方法?

今天,我们就给大家带来山海插件的一个命令:万中取一之正则匹配



本节课-相关命令

命令名称RegexFind命令功能全局查找正则匹配内容参数

参数1【必要】:字符串,要查找的字符串

参数2【必要】:字符串,正则匹配字符串

返回值返回包含匹配结果的数组

我们就以找安卓按键精灵界面界面上的社区按钮坐标为范例

范例代码:

Import "shanhai.lua"

Dim UI_XML, XY, arrXY

// 获取当前界面的XML信息

UI_XML = shanhai.GetUIXml()

XY = FindXML(UI_XML, "社区")

If XY

"" Then

arrXY = Split(XY,",")

TracePrint "社区按钮的坐标为:" & arrXY(0) & "x" & arrXY(1)

End If

Function FindXML(XML, key)

// 组合正则表达式,可查询百度:正则表达式

Dim pattern = "text=""" & key & """.+bounds=""%[([^%]]+)%]"

dim RegexArr = shanhai.RegexFind(XML,pattern)

If RegexArr(0)

null Then

TracePrint "匹配到字符"

FindXML = RegexArr(0)

Else

TracePrint "未匹配到字符"

FindXML = ""

End If

End Function
原理以及应用
这里关键在于配合正则表达式的应用,具体大家可以百度下正则表达式的一些常用语法。

LUA的模式匹配和常见的正则表达式的语法很相似,只是有一些描述符的差别,所以基本上都可以按照标准的正则来进行匹配。如果想要详细的了解LUA 的模式匹配的可以留言,会在之后考虑详细的介绍下模式匹配的用法~

我们先看下获取到的XML信息:



看到这么多的信息先不急,我们直接找想要的就行了,直接搜索“社区”,把这附近的代码单独拿出来看:



其中“bounds”后面中括号里的坐标,第一个坐标就是这个社区的左上角坐标,第二个是右下角的坐标,我们提取左上角的就可以使用了。

// 组合正则表达式,可查询百度:正则表达式

Dim pattern = "text=""" & key & """.+bounds=""%[([^%]]+)%]"

这个表达式就是我们要查找这段内容。
总结预告

本节内容就讲解到这里啦!如果大家有什么好的建议或者需要了解某个功能,可以留言哦!

山海插件还有很多功能,比如打开关闭WiFi、判断wifi或者移动数据流量是否关闭等等,后续我们也会陆续介绍哦!

如果大家想对插件有更多的了解,可以阅读原文进行查看哦!下节课内容预告:一个命令获取APP的版本号
点击下方“阅读原文”获取更多山海插件命令介绍及下载

↓↓↓





    关注 按键精灵


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册