Thread Wieder eine lustige RegEx (9 answers)
Opened by pktm at 2008-04-22 22:09

murphy
 2008-04-22 23:35
#108760 #108760
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Warum es so nicht geht, ist ja klar: Das g-Flag ist nutzlos, weil das Muster verankert ist und zurückgegeben wird eine Liste fester Länge mit den letzten Treffern für alle aufgefangenen Gruppen, was für die letzten beiden Gruppen eben der letzte Schlüssel und Wert in der Zeichenkette sind.

Ich denke aber, dass man das Problem nur dann mit einem einzigen regulären Ausdruck erschlagen kann, wenn man eingebetteten Code verwendet. Ich würde eher den Zweizeiler bevorzugen:
Code (perl): (dl )
1
2
my ($word, $pos, $attrs) = $line =~ /^(\w+)\s+\[(\w+)\s+(.*)\]/;
my %attrs = map m/(\w+)=(\w+)/, split /\s+/, $attrs;


edit: In C(++) ließe sich dieses Problem mit Hilfe von strtok auch recht elegant lösen.
When C++ is your hammer, every problem looks like your thumb.

View full thread Wieder eine lustige RegEx