local gisub = function(s, pat, repl, n)
pat = string.gsub(pat, '(%a)', function (v) return '['..string.upper(v)..string.lower(v)..']' end)
if n then
return string.gsub(s, pat, repl, n)
else
return string.gsub(s, pat, repl)
end
end
str = "sample abc Ab"
str2 = gisub(str, "ab", "**")
-- "sample **c **"
参考: