前言
在 Lua 中,正则表达式的支持是通过 string.match 或 string.gmatch 来实现的。Lua 的正则引擎与其他语言(如 Python 或 JavaScript)有所不同,它不支持像 .* 那样的“贪婪匹配”,而是使用一种简化的模式匹配方式。
简单来说,lua为了保持语言的简洁,将标准的正则表达进行了严重的阉割。
举个例子,要想使用“开.*得金(币|市|啊)”来匹配“开宝箱得金币”,lua中会直接返回nil,无法匹配到。
怎么办呢?有两种解决办法。
第一种,是自己实现一个模拟标准的正则表达式的方法,缺点是每种规则都需要写一个模拟函数。
第二种,是直接在懒人精灵中,调用安卓的类库,实现标准的正则表达式。
模拟正则表达式中的 (币|市) 操作
function match_pattern(str, pattern)
-- 尝试匹配每个选项
local option1 = pattern:match("[(](.-)[)]") -- 提取括号中的内容
if option1 then
local parts = {}
for part in option1:gmatch("([^|]+)") do -- 提取币和市
table.insert(parts, part)
end
-- 使用 string.match 逐个匹配
for _, part in ipairs(parts) do
local match = str:match(pattern:gsub("%(.-%)", part))
if match then
return match
end
end
end
return nil
end
-- 测试用例
local str = "开宝箱得金币"
local pattern = "开.*得金(币|市|啊)"
local result = match_pattern(str, pattern)
print(result) -- 输出: "开宝箱得金币"
调用安卓类库
这个方案的优点,是支持标准的正则表达式,使用起来简单优雅
1. 官方交流QQ群,添加多个不批。建议使用安卓手机或电脑申请。
飞云脚本圈: 586333520
Auto.js学习交流③群:286635606
Auto.js学习交流②群:712194666(满员)
IOS免越狱自动化测试群:691997586
2. 盗版,破解有损他人权益和违法作为,请各位会员支持正版。
3. 本站部分资源来源于用户上传和网络搜集,如有侵权请提供版权证明并联系站长删除。
4.如未特别申明,本站的技术性文章均为原创,未经授权,禁止转载/搬运等侵权行为。
5.全站所有付费服务均为虚拟商品,购买后自动发货。售出后概不接受任何理由的退、换。注册即为接受此条款。
6.如果站内内容侵犯了您的权益,请联系站长删除。
飞云脚本 » 【懒人精灵】使用标准的正则表达式来匹配文本
飞云脚本圈: 586333520
Auto.js学习交流③群:286635606
Auto.js学习交流②群:712194666(满员)
IOS免越狱自动化测试群:691997586
2. 盗版,破解有损他人权益和违法作为,请各位会员支持正版。
3. 本站部分资源来源于用户上传和网络搜集,如有侵权请提供版权证明并联系站长删除。
4.如未特别申明,本站的技术性文章均为原创,未经授权,禁止转载/搬运等侵权行为。
5.全站所有付费服务均为虚拟商品,购买后自动发货。售出后概不接受任何理由的退、换。注册即为接受此条款。
6.如果站内内容侵犯了您的权益,请联系站长删除。
飞云脚本 » 【懒人精灵】使用标准的正则表达式来匹配文本