in reply to Supress similar chars in the string
#!/usr/bin/perl use strict; use warnings; $_ = 'testing 1234567 ........ aaaaaaaasssssss __________ ++++++++++ - +-------- testing testing '; s/((.)\2\2)\2*/$1/g; print;
to output
testing 1234567 ... aaasss ___ +++ --- testing testing
YAPE::Regex::Explain describes the regex as:
( group and capture to \1: ---------------------------------------------------------------------- ( group and capture to \2: ---------------------------------------------------------------------- . any character except \n ---------------------------------------------------------------------- ) end of \2 ---------------------------------------------------------------------- \2 what was matched by capture \2 ---------------------------------------------------------------------- \2 what was matched by capture \2 ---------------------------------------------------------------------- ) end of \1 ---------------------------------------------------------------------- \2* what was matched by capture \2 (0 or more times (matching the most amount possible))
Note I have kept the third 'testing' in the string, which seems to follow spec but not your example.
Update: As AnomalousMonk points out below, swapping \2* to \2+ is more rigorously correct and avoids some unnecessary no-ops. However, I didn't think this particular optimization was likely to have sufficient impact to warrant changing the post content. For a cleaner version, you can also use s/(.)\1{3,}/$1 x 3/eg; (or s/(.)\1{$n,}/$1 x $n/eg;).
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Supress similar chars in the string
by toolic (Bishop) on Jan 18, 2011 at 18:10 UTC | |
by Jim (Curate) on Jan 18, 2011 at 18:50 UTC | |
by Anonymous Monk on Jan 24, 2011 at 02:38 UTC | |
by AnomalousMonk (Archbishop) on Jan 18, 2011 at 22:26 UTC | |
|
Re^2: Supress similar chars in the string
by Anonyrnous Monk (Hermit) on Jan 18, 2011 at 17:44 UTC | |
by AnomalousMonk (Archbishop) on Jan 18, 2011 at 22:36 UTC | |
|
Re^2: Supress similar chars in the string
by AnomalousMonk (Archbishop) on Jan 19, 2011 at 18:44 UTC | |
by kennethk (Abbot) on Jan 19, 2011 at 20:51 UTC |