2010-12-24 5 views
0

zu extrahieren Ich habe ein Stück Daten, aus denen ich einige Zeichenfolgen extrahieren und sie in einen Hash-Wert setzen muss. Würde mich über Ihre Hilfe freuen. Ich habe versucht, dies mit Split-Befehl zu tun, aber es wurde zu kompliziert. Unten ist das Beispiel, mit dem ich helfen möchte.Brauchen Sie Hilfe mit Regex, um Strings aus Daten in einen Hash [perl]

junk here 
     name="bobby" 
     team="orange" 
    junk here 
     name="steve" 
     team="blue" 
    junk here  
     name="joe" 
     team="blue" 
junk here 

Notwendigkeit, Junk aus Daten zu filtern. Daten-> regex filter-> Hash

Hash Ich möchte:% hash = ('bobby' => 'Orange', 'steve' => 'blue', 'Joe' => 'blue',) ;

Antwort

4

Nun, vorausgesetzt, Ihre Werte nie Anführungszeichen enthalten oder jede Form von Flucht und name= ist immer das erste, was auf einer Linie (außer führende Leerzeichen):

my %hash; 

while ($string =~ /^\s*name="([^"]*)"\s*team="([^"]*)"/mg) { 
    $hash{$1} = $2; 
} 
+0

oder einfach:% hash = $ string = ~/^ \ s * name = "([^"] *) "\ s * team =" ([^ "] *)"/mg; – ysth

+0

MEIN HUT IST FÜR SIE AUS. Perfekt! Dieser Ort braucht eine Fähigkeit für Menschen, Geld an Mitwirkende zu spenden. (wie eine kleine Paypal-Taste neben ihrem Namen) Danke nochmal! Perl-Regeln! – nebulus

+0

@ysth, ich denke, das ist nur ein kleiner _tooo_ prägnant für jemanden, der die Frage in erster Linie stellen musste. – cjm

Verwandte Themen