Thread '3,6-10,16,23' in (3,6,7,8,9,10,16,23) umwandeln
(12 answers)
Opened by mixxer at 2019-08-22 22:28
Ein String-Replace und nach folgendes split kann das erledigen.
Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 #!/usr/bin/perl use strict; use warnings; use 5.010; my $string = '1-3,5,9,2-4,11-22,5,7'; # Ersetze Bereich durch einzelne Zeichen # benutzt Ausführung von Perl in Ersetzungsteil des Regex $string =~ s/((\d+)-(\d+))/join ',', $2..$3/ge; # da numerisch nacheinadner gedruckt werden soll: my @array = sort {$a <=> $b} split ',', $string; //edit: Kürzer, in dem beim Ersetzen mit der Kopie gearbeitet wird (Modifer /r) Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 my @array = sort { $a <=> $b } split ',', $string =~ s/ # fange die Bereichsangabe als zwei Gruppen bestehend aus Ziffern ((\d+)-(\d+)) / # ersetze durch Zeichenkette # erzeugt durch join mit Komma join ',', # aus der Liste des ersten bis zweiten matches $2..$3 /rgex; Ich weiß jetzt nicht ob Duplikate bei Seiten nicht vorkommen dürfen. Editiert von GwenDragon: Kommentare, schöneres Regex Last edited: 2019-08-23 12:54:43 +0200 (CEST) |