跳转到内容

模块:Regex

来自DJMAX中文资料库
Raxter留言 | 贡献2025年10月12日 (日) 00:22的版本 (创建页面,内容为“local p = {} local getArgs = require('Module:Arguments').getArgs local function showError(err) return '<span class="error">' .. tostring(err) .. '</span>' end local function performMatch(text, pattern) local result = text:match(pattern) if result == nil then error("No match found") end return result end local function performReplace(text, pattern, use) local result = text:gsub(pattern, use) if result == text then e…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)

此模块的文档可以在模块:Regex/doc创建

local p = {}
local getArgs = require('Module:Arguments').getArgs

local function showError(err)
    return '<span class="error">' .. tostring(err) .. '</span>'
end

local function performMatch(text, pattern)
    local result = text:match(pattern)
    if result == nil then
        error("No match found")
    end
    return result
end

local function performReplace(text, pattern, use)
    local result = text:gsub(pattern, use)
    if result == text then
        error("No use occurred")
    end
    return result
end

function p.match(frame)
    local args = getArgs(frame)
    local text = args[1] or ''
    local pattern = args[2] or ''

    if not text or not pattern then
        return showError("警告:文字或正则表达式缺失。")
    end

    local result
    local status, err = pcall(function()
        result = performMatch(text, pattern)
    end)

    if status then
        return result
    else
        return showError(err)
    end
end

function p.replace(frame)
    local args = getArgs(frame)
    local text = args[1] or ''
    local pattern = args[2] or ''
    local use = args[3] or ''

    if not text or not pattern or not use then
        return showError("文字、正则表达式或者使用函数错误。")
    end

    local result
    local status, err = pcall(function()
        result = performReplace(text, pattern, use)
    end)

    if status then
        return result
    else
        return showError(err)
    end
end

return p