Perl: extrahieren von Daten aus text mit regex

Ich bin mit Perl zu tun Textverarbeitung mit regex. Ich habe keine Kontrolle über die Eingabe. Ich habe gezeigt, einige Beispiele für die Eingabe unten.

Wie Sie sehen können die Elemente B und C können in den string n-mal mit unterschiedlichen Werten. Ich brauchen, um alle Werte als Referenz. Oder wenn Sie wissen, einen anderen Weg bin ich alle Ohren.

Ich bin versucht, branch reset-Muster (wie beschrieben bei perldoc: "Erweiterte Muster") ich bin nicht viel Glück passenden string.

("Daten" ("Int "Ein" 22)(Int "B" 1)(Int " "C" 2) ("Int "D" 34896)(Int "E" 38046)) 
("Daten" ("Int "Ein" 22)(Int "B" 1)(Int " "C" 2) ("Int "B" 3)(Int " "C" 4) ("Int "B" 5)(Int " "C" 6) ("Int "D" 34896)(Int "E" 38046)) 
("Daten" ("Int "Ein" 22)(Int "B" 22)(Int " "C" 59)(Int "B" 1143)(Int " "C" 1210)(Int "B" 1232)(Int " "C" 34896)(Int "D" 34896)(Int "E" 38046)) 

Mein Perl ist unten, jede Hilfe wäre toll. Vielen Dank für jede Hilfe, die Sie geben können.

if($inputString =~/\("Data" \(Int "A" ([0-9]+)\)(?:\(Int "B" ([0-9]+)\)\(Int "C" ([0-9]+)\))+\(Int "D" ([0-9]+)\)\(Int "E" ([0-9]+)\)\)/) {

    print "\n\nmatched\n";

    print "1: $1\n";
    print "2: $2\n";
    print "3: $3\n";
    print "4: $4\n";
    print "5: $5\n";
    print "6: $6\n";
    print "7: $7\n";
    print "8: $8\n";
    print "9: $9\n";

}
  • Es würde sehr helfen, wenn du beschreiben kannst was versuchen Sie zu erreichen. Nicht wie (bekommen alle Werte als Referenz), aber was (also die ich brauche, um das Werten zu können ...)
InformationsquelleAutor Donald | 2009-05-17
Schreibe einen Kommentar