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;
|