Thread regexp - komme nicht weiter (14 answers)
Opened by christian at 2014-03-04 16:21

Linuxer
 2014-03-04 17:32
#173829 #173829
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
Welche Variante meinst Du? Meine split()-Variante hat ja schon einen Kommentar? Reichte der nicht?

Ich vermute, dass Du auf die Nicht-split()-Variante geantwortet hast, aber die reine Regex-Variante meinst?


Vorschlag (und erster Erklärungsversuch im Text):

Code (perl): (dl )
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, ''


Doku-Tipp:

Perldoc:perlretut
Perldoc:perlrequick
Perldoc:perlre

edits: 2 Änderungen am 1. Regex im map...
Last edited: 2014-03-04 18:03:33 +0100 (CET)
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread regexp - komme nicht weiter