in reply to Re^2: Regexp substitution on variable-length ranges with embedded code? ( $^N )
in thread Regexp substitution on variable-length ranges with embedded code?
> PS: beautifying with /x modifier and adding missing ; in replacement left for the interested reader. :)
well since my editor has a (mostly functioning) cperl-beautify-regexp
use v5.12; use warnings; use Test::More; my $str = '43:1:1; 43:1:2; 43:1:3; 43:1:4; 43:1:5; 43:1:6; 27:3:7; 27: +3:8; 27:3:9; 65:1:4; 65:1:18'; my $exp = '43:1:1-6; 27:3:7-9; 65:1:4; 65:1:18'; my $got = $str; $got =~ s/ ( \d+:\d+: ) # $1 ( \d+ # (updated +) ) # $2 = first $^N ; (?: # group w/o match \s \1 ( (??{ $^N+ 1 }) # include last_match + 1 ) # $3 = next $^N ; )+ # repeat /$1$2-$3;/xg; is($got, $exp, "fits"); done_testing;
Worth noting that the OP was wrong with his expectation, it's 43:1:1-6; not 43:1:1-5;
Cheers Rolf
(addicted to the Perl Programming Language :)
Wikisyntax for the Monastery
PS: still not perfect, because the input isn't terminated with a semicolon, but I'm tired now. :)
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^4: Regexp substitution on variable-length ranges with embedded code? ( $^N )
by Polyglot (Chaplain) on May 26, 2021 at 14:45 UTC | |
by LanX (Saint) on May 26, 2021 at 15:59 UTC |
In Section
Seekers of Perl Wisdom