Schrift
[thread]12096[/thread]

Grundlegende Frage zu Regulären Ausdrücken (HTML ausfiltern)



<< |< 1 2 3 >| >> 24 Einträge, 3 Seiten
Roper
 2008-06-28 18:21
#111615 #111615
User since
2008-06-28
3 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich habe eine allgemeine Frage zu regulären Ausdrücken.
Ich hab ca. Anfang der Woche angefangen Perl zu lernen und mir ist bis jetzt nicht ganz klar geworden wie genau Perl da vorgeht.

Folgendes Beispiel:
Und zwar möchte ich durch eine Substitution in einer HTML Datei sämtliche Tags durch nichts ersetzen.
Meine erste Idee war als Pattern folgendes zu verwenden: <.+>
Also eine Spitzklammer < gefolgt von mindestens einem bis beliebig viele Zeichen und einer Spitzklammer die das Ende markiert >.

Ist es denn nicht so dass bei der Suche nach dem Pattern zuerst einmal nach < gesucht wird, Danach wird überprüft ob das 2te Zeichen im Pattern passt. Das kann ja jedes beliebige Zeichen (außer \n) sein und trifft so eigentlich immer.
Da dieses beliebige Zeichen beliebig oft auftauchen darf wird dann überhaupt noch ein > gefunden? Dieses fällt ja auch in das Muster .+

Eine Zeile mit z.B.: <b>Test</b>
würde dann ja von <b... bis b> komplett getroffen und ersetzt werden.

Ist das die Vorgehensweise von Perl? Und wenn ja, wie könnte ich dann ein Tag sinnvoll als Pattern darstellen?



//ModEdit GwenDragon: Titel ergänzt
esskar
 2008-06-28 18:28
#111616 #111616
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
<.+?>

daurch wird das .+ nicht so gierig
drizzo
 2008-06-28 18:30
#111617 #111617
User since
2008-06-11
11 Artikel
BenutzerIn
[default_avatar]
<[^>]+>

so vielleicht ? ;-)
(keine ahnung ob das die beste Methode ist ehrlich gesagt, aber damit solltest Du nur ein Tag jeweils treffen.
Gast Gast
 2008-06-28 20:08
#111624 #111624
Aber es kann auch so was geben:
Code: (dl )
<a href="#" onClick="javascript:alert('Message >> Fehler!')">TEST</a>
was dann? Darum sollte man das Parsen eher den Profis überlassen und Module nutzen. ;-)
Gast Gast
 2008-06-28 20:13
#111626 #111626
oder
Code: (dl )
1
2
3
4
5
6
7
<!-- Auskommentiert: -->
<!--
<ul>
<li>a</li>
<li>b</li>
</ul>
-->
Gast Gast
 2008-06-28 20:15
#111627 #111627
oder:
Code: (dl )
Beachten sie, dass immer gilt a<b <u>aber nicht</u> c>d! 
Gast Gast
 2008-06-28 20:47
#111631 #111631
Wie oft muss sich das noch sagen?
Regexes sind nicht geeignet zum Parsen von HTML!

Für sowas gibt es HTML-Parser ;)
GwenDragon
 2008-06-28 21:27
#111633 #111633
User since
2005-01-17
14761 Artikel
Admin1
[Homepage]
user image
Wenn du ölernen willst, was du mit Regexes alles falsch machen kannst, dafür ist es gut.
Aber um balancierte Tags zu parsen? Nein. jedenfalls nicht mit der normalen Regexengine der derzeitigen Perls. Perl 6 wäre was anderes.

Gast hat Recht. Es steht auch irgendwo in der Perldoku (perlfaq9) drin, dass es keinen Sinn hat, mit einem Regex sowas zu parsen.

Und in http://board.perl-community.de/thread/11311/startW... haben wir sowas auch mal gehabt.
Roper
 2008-06-29 02:28
#111636 #111636
User since
2008-06-28
3 Artikel
BenutzerIn
[default_avatar]
Da ich die HTML Seiten um die es geht alle selber geschrieben habe, kann ich sehr sicher sein, dass absolut keine außergewöhnlichen Konstruktionen enthalten sind, sondern nur normales HTML.

Gibt es denn beim arbeiten mit Regulären Ausdrücken in Perl keine Möglichkeit bis zu einem bestimmten Zeichen zu gehen? Wie gesagt habe ich erst anfang der Woche mit Perl angefangen und weiß atm noch nicht sehr viel.

Aus einer anderen Skriptsprache mit großen Möglichkeiten im Umgang mit regulären Ausdrücken (Omnimark) ist mir allerdings eine Möglichkeit bekannt mit der man explizit bis zu einem bestimmten Zeichen oder sogar Pattern suchen kann (Lookahead-Befehl).
renee
 2008-06-29 11:03
#111637 #111637
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Das geht auch mit Perl-RegEx...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< |< 1 2 3 >| >> 24 Einträge, 3 Seiten



View all threads created 2008-06-28 18:21.