Thread Hilfe beim regexp benötigt (6 answers)
Opened by toby at 2009-05-11 16:12

toby
 2009-05-11 16:12
#121436 #121436
User since
2006-04-14
66 Artikel
BenutzerIn
[default_avatar]
Hallo Gemeinde :)

ich habe eine Zeile mit folgenden kommaseparierten Mustern:

PREFIX::VALUE=WERT

Beispielzeile:

$line="P1::Va=Wb,P2::Vc=Wd,P1::Ve=Wf,P3::Vx=Wy,"

Ich muss nun diese Zeile so zerlegen, dass ich die einzelne kommaseparierte Teile rausbekomme. Besondere Schwierigkeit dabei: Werte können unter Umständen ein Komma beinhalten. Z.B. AUTO::GESCHWINDIGKEIT=12,3KM/H (sonst könnte ich das ganze einfach mit split erledigen). Desweiteren kann es sein, dass am Ende der Zeile ein Komma kommt, oder auch nicht...

Bis jetzt ist es mir folgendes gelungen:

Code: (dl )
1
2
3
4
5
6
7
8
$line="P1::Va=Wb,P2::Vc=Wd,P1::Ve=Wf,P3::Vx=Wy,";

printf "\n$line\n";

if($line =~ /(.*),(.*::.*=.*)/){
printf "\n$1\n";
printf "\n$2\n";
}


Jetzt könnte ich $2 aus $line ausschneiden und die Aktion wiederholen, bis $line leer ist. Das ist aber ziemlich umständlich und geht bestimmt direkt mit regulären Ausdrücken.

Weiss jemand einen Rat, wie ich aus $line auf einfache Weise (regexp) ALLE kommaseparierten Teile nach genanntem Muster rausbekomme?

Danke!
Toby
Last edited: 2009-05-11 16:36:11 +0200 (CEST)

View full thread Hilfe beim regexp benötigt