in reply to Regular Expressions: Call for Examples
Well, I went truding around and I found these:
This first one was from a client who accidentally did something like: s/\n//g; to a few hundred text files. The files happened to be lists:
which turned into:1) foo and his friend bar 2) Stuff and more (stuff) 3) More (and30) more (and) more 4) garbage (8) 5) some other things 6) (7lalala)
Anyways, it was my job to fix them. I was having a difficult time correctly parsing, but ended up solving the problem using your sexeger technique.1) foo and his friend bar2) Stuff and more (stuff)3) More (and30) more + (and) more4) garbage (8)5) some other things6) (7lalala)
A few weeks later, for fun, I was able to solve the problem using a forward regex:$text = reverse $copy; $text =~ s/ (?<= \) ) (\d+) (?= [^()]* \) ) /$1\n/gx; $text = reverse $text;
my $bal = # this is from perlre qr/ \( (?: (?> [^()]+ ) | (??{$bal}) )* \) /x; $text =~ s/ ( (?: (??{$bal}) [^(\d]* )* ) (\d+) (?= \) ) /$1\n$2/xg;
Which is exponentially uglier, and proves just how useful sexeger really is.
Another possibly useful example is a dealing from irc, where the person needed to perform a crude form escaping that involved stripping all backslashes that were between brackets. This solved his problem:
$text =~ s/ (?<= \[ ) ([^\]]*) (?= \] ) / strip_slash($1) /gex; sub strip_slash { $_=pop; s/\\//g; $_; }
Finally, theres a bunch of stuff at the end of Parsing with Perl 6 you might find useful...
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Re: Regular Expressions: Call for Examples
by converter (Priest) on Jul 22, 2002 at 08:39 UTC | |
by Aristotle (Chancellor) on Jul 22, 2002 at 23:09 UTC |