【懒人精灵】使用标准的正则表达式来匹配文本

前言

在 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)  -- 输出: "开宝箱得金币"

调用安卓类库

这个方案的优点,是支持标准的正则表达式,使用起来简单优雅

已有0人支付

1. 官方交流QQ群,添加多个不批。建议使用安卓手机或电脑申请。
飞云脚本圈: 586333520飞云脚本圈
Auto.js学习交流③群:286635606
Auto.js学习交流②群:712194666(满员)
IOS免越狱自动化测试群:691997586
2. 盗版,破解有损他人权益和违法作为,请各位会员支持正版。
3. 本站部分资源来源于用户上传和网络搜集,如有侵权请提供版权证明并联系站长删除。
4.如未特别申明,本站的技术性文章均为原创,未经授权,禁止转载/搬运等侵权行为。
5.全站所有付费服务均为虚拟商品,购买后自动发货。售出后概不接受任何理由的退、换。注册即为接受此条款。
6.如果站内内容侵犯了您的权益,请联系站长删除。
飞云脚本 » 【懒人精灵】使用标准的正则表达式来匹配文本

企业级大数据智能营销管理系统

了解详情