my $test="[Part1,Part2],[Part3],[Part4, Part5],[Part6]";; my @a=split(/\[([^\[]+)\]/, $test);
1 2 3 4
my $text = "[Part1,Part2],[Part3],[Part4, Part5],[Part6]"; my @data = $text =~ m{\[([^\]]+)\]}g; print join "\n", @data, '';
my @data = split /\[|\],?\s*\[?/, $text;
1 2 3 4 5 6
my $text = "[Part1,Part2],[Part3],[Part4, Part5],[Part6]"; # splitte zuallerst am ],[, erst danach am [ oder ]; erzeugt ggfs. am Anfang und Ende Leerfelder! my @data = split m{\],\[|\[|\]}, $text; print join "\n", @data, '';
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
my $text = "[Part1,Part1_XX,Part2],[Part3,Part3_XX],[Part4, Part5],[Part6]"; # die folgenden Zeilen quasi von hinten nach vorne lesen: my @data = # fuer jeden Treffer wird der _XX-Teil entfernt und die Kommata bereinigt # map muss das Element selber wieder ausgeben; daher das $_ am Ende map { s/[^,]+_XX//g; s/^,|,$//g; s/,,/,/g; $_ } # suche nach Text in eckigen Klammern und fange ihn ein mit runden Klammern; # liefere alle Treffer als Liste ans map {} $text =~ m{\[([^\]]+)\]}g; print join "\n", @data, ''
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
my $text = "[Part1,Part1_XX,Part2],[Part3,Part3_XX],[Part4, Part5],[Part6]"; # die folgenden Zeilen quasi von hinten nach vorne lesen: my @data = # fuer jeden Treffer wird der _XX-Teil entfernt und die Kommata bereinigt # map muss das Element selber wieder ausgeben; daher das $_ am Ende map { s/[^,]+_XX//g; s/^,|,$//g; s/,,/,/g; $_ } # suche nach Text in eckigen Klammern und fange ihn ein mit runden Klammern; # liefere alle Treffer als Liste ans map {} $text =~ m{\[([^\]]+)\]}g; print join "\n", @data, ''
1
2
3
4
5
Perl> my $text = "[Part1,Part1_XX,Part2],[Part3,Part3_XX],[Part4, Part5],[Part6]";
[Part1,Part1_XX,Part2],[Part3,Part3_XX],[Part4, Part5],[Part6]
Perl> my @data = map { s/[^,]+_XX//g; s/^,|,$//g; s/,,/,/g; $_ }
[!] compilation error: syntax error at (eval 4) line 4, at EOF
my @data = map { s/[^,]+_??//g; s/^,|,$//g; s/,,/,/g; $_ } $text =~ m{\[([^\]]+)\]}g;
1 2 3
my $text = "[Part1,Part1_SW,Part2],[Part3,Part3_RF],[Part4, Part5],[Part6]"; my @data = map { s/[^,]+(_SW|_RF)//g; s/^,|,$//g; s/,,/,/g; $_ } $text =~ m{\[([^\]]+)\]}g; print join "\n", @data, ''
Guest christianMein Versuch liefert zwar schon den Inhalt der eckigen Klammern, aber ich kriege das Komma und das Leerzeichen dazwischen nicht weg, diese werden auch im Array gespeichert.
Code: (dl )my $test="[Part1,Part2],[Part3],[Part4, Part5],[Part6]";; my @a=split(/\[([^\[]+)\]/, $test);
1 2
my $test="[Part1,Part2],[Part3],[Part4, Part5],[Part6]"; my @a=split(/(?<=\]),(?=\[)/,$test;