A typical approach is not to split, but to parse the chunks you want to preserve.
A regex for that is:
my $re = qr{
(?> # don't backtrack into this group
!. # either the escape character,
# followed by any other character
| # or
[^!;\n] # a character that is neither escape
# nor split character
)+
}x;
while ($str =~ /($re)/g) {
print "Chunk '$1'\n";
}
This technique is fairly general, and works for example for quoted strings, where the backslash can escape the quote character to not terminate the string.
You can read more about it in Mastering Regular Expressions by Jeffrey E.F. Friedl, a book I can warmly recommend.
Update: Added \n to the negated character class; mr_mischief pointed out that it is probably closer to the desired output that way.
Perl 6 - links to (nearly) everything that is Perl 6.
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.