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:
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)
which turned into:
1) foo and his friend bar2) Stuff and more (stuff)3) More (and30) more
+ (and) more4) garbage (8)5) some other things6) (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.
$text = reverse $copy;
$text =~
s/
(?<= \) )
(\d+)
(?= [^()]* \) )
/$1\n/gx;
$text = reverse $text;
A few weeks later, for fun, I was able to solve the problem using a forward regex:
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...
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.