<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ASandbox%2Ftrappist_the_monk%2FMSGJ_regex</id>
	<title>Module:Sandbox/trappist the monk/MSGJ regex - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ASandbox%2Ftrappist_the_monk%2FMSGJ_regex"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/trappist_the_monk/MSGJ_regex&amp;action=history"/>
	<updated>2026-04-22T00:29:10Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://stockhub.co/index.php?title=Module:Sandbox/trappist_the_monk/MSGJ_regex&amp;diff=146597&amp;oldid=prev</id>
		<title>imported&gt;Trappist the monk at 19:00, 12 November 2022</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/trappist_the_monk/MSGJ_regex&amp;diff=146597&amp;oldid=prev"/>
		<updated>2022-11-12T19:00:56Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;require (&amp;#039;strict&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; M A I N &amp;gt;----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
lua implementation of this regex:&lt;br /&gt;
	[a-z]+(\-[a-z]+)*(_res\-[0-9a-f]{8}(\-[0-9a-f]{4}){3}\-[0-9a-f]{12})?&lt;br /&gt;
&lt;br /&gt;
this function assumes that &amp;lt;target&amp;gt; is valid;&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function main (target)&lt;br /&gt;
	target = target or &amp;#039;xyz-uvw-rst_res-12345678-1111-2222-3333-012345543210&amp;#039;;	-- a test string that I think matches the regex&lt;br /&gt;
&lt;br /&gt;
	local part1, part2;&lt;br /&gt;
	if target:find (&amp;#039;_res&amp;#039;, 1, true) then&lt;br /&gt;
		part1, part2 = target:match (&amp;#039;([^_]+)(_res.+)&amp;#039;);						-- split at constant &amp;#039;_res&amp;#039;; part 2 nil when no constant &amp;#039;_res&amp;#039;&lt;br /&gt;
	else&lt;br /&gt;
		part1 = target;															-- part2 not in target&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local captures_t = {};														-- sequence to hold captures (left to right)&lt;br /&gt;
	&lt;br /&gt;
	if part1:find (&amp;#039;-&amp;#039;, 1, true) then											-- if part1 has hyphens&lt;br /&gt;
		for capture in part1:gmatch (&amp;#039;(%-%l+)&amp;#039;) do&lt;br /&gt;
		table.insert (captures_t, capture);										-- add to the captures_t sequence&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if part2 then&lt;br /&gt;
		table.insert (captures_t, part2);										-- the part2 capture&lt;br /&gt;
		for capture in part2:gmatch (&amp;#039;%-%x%x%x%x%f[%-]&amp;#039;) do&lt;br /&gt;
			table.insert (captures_t, capture);									-- add to the captures_t sequence&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return mw.dumpObject (captures_t);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; I S _ V A L I D &amp;gt;--------------------------------------------------------------&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function is_valid (target)&lt;br /&gt;
&lt;br /&gt;
	target = target or &amp;#039;xyz-uvw-rst_res-12345678-1111-2222-3333-012345543210&amp;#039;;	-- a test string that I think matches the regex&lt;br /&gt;
&lt;br /&gt;
	local part1, part2;&lt;br /&gt;
	if target:find (&amp;#039;_res&amp;#039;, 1, true) then&lt;br /&gt;
		part1, part2 = target:match (&amp;#039;([^_]+)(_res.+)&amp;#039;);						-- split at constant &amp;#039;_res&amp;#039;; part 2 nil when no constant &amp;#039;_res&amp;#039;&lt;br /&gt;
	else&lt;br /&gt;
		part1 = target;															-- part2 not in target&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if part1:find (&amp;#039;[^%-%l]&amp;#039;) then												-- if &amp;lt;part1&amp;gt; has anything but lowercase letters and hyphens&lt;br /&gt;
		return false;															-- invalid so return false&lt;br /&gt;
	else																		-- here when &amp;lt;part1&amp;gt; has only lowercase letters and hyphens&lt;br /&gt;
		if part1:match (&amp;#039;^%-&amp;#039;) or part1:match (&amp;#039;%-$&amp;#039;) then						-- first and last characters in &amp;lt;part1&amp;gt; must be lowercase letters&lt;br /&gt;
			return false;														-- invalid so return false&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if part2 then&lt;br /&gt;
		if not part2:match (&amp;#039;^_res%-%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x$&amp;#039;) then&lt;br /&gt;
			return false;														-- invalid so return false&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return true;																-- valid so return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; E X P O R T S &amp;gt;----------------------------------------------------------------&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
	main = main,&lt;br /&gt;
	is_valid = is_valid,&lt;br /&gt;
	}&lt;/div&gt;</summary>
		<author><name>imported&gt;Trappist the monk</name></author>
	</entry>
</feed>