There's more than one way to do things PerlMonks

### Re: The craziest RegExes you ever created

by zshzn (Hermit)
 on Jul 04, 2006 at 02:05 UTC Need Help??

in reply to The craziest RegExes you ever created

This is a very silly script I wrote to demonstrate the very possibility of how something could be done this way. The regex is to convert roman numerals to integers. It is neither useful nor witty.

```use strict;

sub l { return length shift }
sub roman2int {
\$_ = shift;
/(M*)(?{\$a+=1000*l\$1})(D*)(?:(?!M)(?{\$a+=500*l\$2})|(?{\$a-=500*l\$2}
+))(C*)(?:(?![MD])(?{\$a+=100*l\$3})|(?{\$a-=100*l\$3}))(L*)(?:(?![MDC])(?
+{\$a+=50*l\$4})|(?{\$a-=50*l\$4}))(X*)(?:(?![MDCL])(?{\$a+=10*l\$5})|(?{\$a-
+=10*l\$5}))(V*)(?:(?![MDCLX])(?{\$a+=5*l\$6})|(?{\$a-=5*l\$6}))(I*)(?:(?![
+MDCLXV])(?{\$a+=1*l\$7})|(?{\$a-=1*l\$7}))(M*)(?{\$a+=1000*l\$8})(D*)(?{\$a+
+=500*l\$9})(C*)(?:(?![MD])(?{\$a+=100*l\$10})|(?{\$a-=100*l\$10}))(L*)(?:(
+?![MDC])(?{\$a+=50*l\$11})|(?{\$a-=50*l\$11}))(X*)(?:(?![MDCL])(?{\$a+=10*
+l\$12})|(?{\$a-=10*l\$12}))(V*)(?:(?![MDCLX])(?{\$a+=5*l\$13})|(?{\$a-=5*l\$
+13}))(I*)(?:(?![MDCLXV])(?{\$a+=1*l\$14})|(?{\$a-=1*l\$14}))(C*)(?{\$a+=10
+0*l\$15})(L*)(?:(?![MDC])(?{\$a+=50*l\$16})|(?{\$a-=50*l\$16}))(X*)(?:(?![
+MDCL])(?{\$a+=10*l\$17})|(?{\$a-=10*l\$17}))(V*)(?:(?![MDCLX])(?{\$a+=5*l\$
+18})|(?{\$a-=5*l\$18}))(I*)(?:(?![MDCLXV])(?{\$a+=1*l\$19})|(?{\$a-=1*l\$19
+}))(L*)(?{\$a+=100*l\$20})(X*)(?:(?![MDCL])(?{\$a+=10*l\$21})|(?{\$a-=10*l
+\$21}))(V*)(?:(?![MDCLX])(?{\$a+=5*l\$22})|(?{\$a-=5*l\$22}))(I*)(?:(?![MD
+CLXV])(?{\$a+=1*l\$23})|(?{\$a-=1*l\$23}))(X*)(?{\$a+=10*l\$24})(V*)(?:(?![
+MDCLX])(?{\$a+=5*l\$25})|(?{\$a-=5*l\$25}))(I*)(?:(?![MDCLXV])(?{\$a+=1*l\$
+26})|(?{\$a-=1*l\$26}))(X*)(?{\$a+=10*l\$27})/;
return \$a;
}
print roman2int shift;

Replies are listed 'Best First'.
Re^2: The craziest RegExes you ever created
by Ieronim (Friar) on Jul 04, 2006 at 16:32 UTC
It is neither useful nor witty.
So i won't add it to my list, in spite of its incredible length :)
Although it is both crazy and interesting, in its own way, and those were two attributes you requested :)

Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://559072]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (5)
As of 2024-09-10 20:35 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
The PerlMonks site front end has:

Results (7 votes). Check out past polls.

Notices?
 • erzuuli ‥ 🛈The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.