in reply to Re^4: sequential substitutions
in thread sequential substitutions
All that foo foo foo stuff... That's a lot of foo-ing around for a simple substitution — and a lot of room for error to creep in. Another way (needs Perl version 5.10+ regex extensions):
If you want to get rid of the leading/trailing whitespace, that's easily done. If you only have pre-5.10 regexes to work with, that can be handled too, although it's a bit more messy.c:\@Work\Perl\monks>perl -wMstrict -le "use 5.010; ;; my $s = qq{www<foo> 3 </foo>\n<bar>999</bar>\n<foo>14 </foo>xx\n} . qq{<bar>998</bar>\nyyy<foo> 159</foo>z\n<bar>997</bar>\n} ; print qq{[[$s]]}; ;; { my $n = 1; $s =~ s{ <(foo)> \s* \K \d+ (?= \s* </\g-1>) }{ $n++ }xmsge; } print qq{[[$s]]}; " [[www<foo> 3 </foo> <bar>999</bar> <foo>14 </foo>xx <bar>998</bar> yyy<foo> 159</foo>z <bar>997</bar> ]] [[www<foo> 1 </foo> <bar>999</bar> <foo>2 </foo>xx <bar>998</bar> yyy<foo> 3</foo>z <bar>997</bar> ]]
Give a man a fish: <%-{-{-{-<
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^6: sequential substitutions
by hdb (Monsignor) on Aug 06, 2018 at 08:25 UTC |