Module:Regex

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

--args: 1 - page to search, 2 - match pattern

local function allcases(s) return s:gsub('([%?%^%$%(%)%%%.%[%]%*%+%-])', '%%%1') :gsub('%a', function(letter) return '['..letter:upper..letter:lower..']' end) :gsub('%[([^%[%]]+)%]', '%1') end

function p._match(args) local page = mw.title.new(args["1"]) if not page then --bad title return "" end local redirectTarget = page.redirectTarget if redirectTarget then page = mw.title.new(redirectTarget.prefixedText) end local content = page:getContent if not content then --page does not exist return "" end local pattern = args["2"] or "" return mw.ustring.match(content, pattern) end

function p.match(frame) local args = getArgs(frame) return p._match(args) end

return p