You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何优化Lua模式匹配函数 合并多个gsub为单一替换表处理

实现方法

可以去掉最后两个gsub调用,仅通过一次gsub完成全部替换操作。由于连续空格长度、^后跟随的数字都是动态值,无法穷举所有情况写入静态替换表,因此我们可以把匹配模式调整为覆盖所有待处理项的联合模式,搭配处理函数优先查询替换表,未命中的匹配项按其余规则处理即可。

修改后的代码如下:

function sanitize(txt)
    local replacements = {
        ['&'] = '&', 
        ['<'] = '&lt;', 
        ['>'] = '&gt;', 
        ['\n'] = '<br/>'
    }
    return txt:gsub('[&<>\n]| +|%^%d', function(match)
        -- 优先匹配替换表中的固定字符
        local res = replacements[match]
        if res then
            return res
        end
        -- 匹配到连续空格则合并为单个
        if match:byte(1) == 32 then
            return ' '
        end
        -- 匹配到^加数字直接删除
        return ''
    end)
end

注:原代码中的替换键存在HTML转义冗余,上述代码已修正为直接匹配原始字符,和原函数执行效果完全一致。

内容的提问来源于stack exchange,提问作者cahtexhuk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 17:27:05