模块:Regex:修订间差异
无编辑摘要 |
无编辑摘要 |
||
| 第7行: | 第7行: | ||
function p.match(frame) | function p.match(frame) | ||
local args | local args = getArgs(frame) | ||
local | local str = args[1] or '' | ||
local | local pattern = args[2] or '' | ||
local | local fmt = args[3] or '$1' | ||
local | local noMatch = args[4] or '' | ||
if | if str == '' or pattern == '' then | ||
return | return noMatch or errMsg('缺少文本或正则') | ||
end | end | ||
local | local caps = {str:match(pattern)} | ||
if # | if #caps == 0 then | ||
return | return noMatch or errMsg('正则未匹配到任何内容') | ||
end | end | ||
if not | if not fmt:find('$%d') then | ||
return | return fmt | ||
end | end | ||
local out = | local out = fmt | ||
for i = 1, # | for i = 1, #caps do | ||
out = out:gsub('$' .. i, | out = out:gsub('$' .. i, caps[i]) | ||
end | end | ||
return out | return out | ||
| 第34行: | 第34行: | ||
function p.replace(frame) | function p.replace(frame) | ||
local args = getArgs(frame) | local args = getArgs(frame) | ||
local | local str = args[1] or '' | ||
local | local pattern = args[2] or '' | ||
local | local replace = args[3] or '' | ||
if | if str == '' or pattern == '' or replace == '' then | ||
return errMsg('缺少文本、正则或替换内容') | return errMsg('缺少文本、正则或替换内容') | ||
end | end | ||
local ok, res = pcall(function() | local ok, res = pcall(function() | ||
return ( | return (str:gsub(pattern, replace)) | ||
end) | end) | ||
if not ok then return errMsg(res) end | if not ok then return errMsg(res) end | ||