小伙伴们大家好,之前一篇教程我们学习了通过获取界面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 的模式匹配的可以留言,会在之后考虑详细的介绍下模式匹配的用法~