http://qs321.pair.com?node_id=358688

My "pet" regex I've been playing with for a few days.
my $simples = qr{\*\*}; # extensible by user. Same opening and clos +ing. my $ps= qr{(?<prematch>.*?) (?: (?<link> (?: \[\[\s*(?<body>.*?)\s*\]\] ) # explicit use of bracke +ts | (?: (?<body>(?:http|ftp)s?://\S+) ) # bare (just a st +art) )(*:link) | ~ (?<body> (?&link)|.|\Z ) (*:escape) | // \s* (?<body>(?: (?&link) | . )*?) \s* (?: //|\Z)(*:italic +) # special rules for //, TODO start no problem, skip any links in b +ody. | (?<simple>$simples)\s*(?<body>.*?)\s*(?:\k<simple>|\Z)(*:simpl +e) | \\\\ (*:break) | \{{3} \s* (?<body>.*?) \s* \}{3} (*:nowiki) # be sure to check + for three braces before checking for two. | \{{2} \s* (?<link>[^|]*?) \s* (?: \| (?<alt>.*?) \s* )? \} +{2} (*:image) | \<{3} \s* (?<body>.*?) \s* \>{3} (*:placeholder) # be sure to +check for 3 angles before checking for 2 (extension) | \Z (*:nada) # must be the last branch ) }xs;