Thread HTML mit Perl regex parsen
(9 answers)
Opened by Lauvia at 2013-09-06 12:50
Auch wenn's nur ein einfaches HTML ist, ist HTML eigentlich nicht regulär genug für Reguläre Ausdrücke.
Nun baut man für das gegebene Beispiel einen Regex auf und der funktioniert auch für das Beispiel. Dann kommt eine Variation der Quelldaten ins Spiel und der Regex passt nicht mehr; hat man ihn dann angepasst, kommt die nächste Variation, etc. ... Wenn Du die HTML-Tags eh nicht interessant findest und mit Zeichenklassen der Art "[A-Z]" erschlagen willst, lass das doch raus. Beschränke Deinen Regex auf das Wesentliche, was Dich interessiert. Beispiel: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 my $line = <<LINE; <TR class='passed'><TD>CAN signal</TD><TD>'DISP_RQ_GR_GRB' available in Inca.</TD><TD>PASSED</TD></TR> LINE # mehrzeiligen Regex mit Kommentaren my $regex = qr{ # wir brauchen die verwendete class class='([^']+)' # dann kommt erstmal uninteressantes (aber bitte sowenig wie moeglich) .*? # innerhalb einer tabellenzelle zwei strings einfangen <TD>'([^']+)'\s*([^<]+)</TD> }x; # ENDE Regex if ( my ($Inca_Vchk, $Inca_Name, $Inca_Comment) = $line =~ $regex ) { print $Inca_Vchk, "\n", $Inca_Name, "\n", $Inca_Comment, "\n", ; } Aber trotzdem, schau Dir mal einen HTML-Parser und seinen Einsatz an ... 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! |