Regular Expression



  • Hallo,

    ich wusste nicht genau, wo Sachen mit Regular Expressions am Besten hinpassen. Ich hoffe hier geht das so einigermaßen.

    Ich habe einen String, der den Quelltext einer HTML enthält und lasse eine Regular Expression darüber laufen, um mir alle Links herauszufiltern. Ich nutze folgende RegEx:

    (?i)(?<=<a href=\")(?P<protokoll>(https?://|ftp://)?)(?<!javascript:;)(?P<adresse>.+?)(?=\")
    

    Der erste Ausdruck in Klammern schaltet auf CASE-INSENSITIVE, so dass es egal ist, ob groß oder Kleinschreibung. Dann folgt eine LOOK BEHIND-Assertion, so dass nur Sachen gefunden werden, vor denen '<a href="' steht. Dann bastle ich eine Gruppe namens 'protokoll', die halt entweder 'http://' oder 'https://' oder 'ftp://' oder nichts enthält (bei relativen Pfaden, die ja kein Protokoll vorangestellt haben).

    Das nun folgende Teil klappt nicht, so wie ich will:

    (?<!javascript:;)
    

    ... das Ding soll '<a href="java\1:;">...' Links rausfiltern. Ich dachte ich benutze diese NEGATIVE LOOK BEHIND-Assertion. Aber es funzt nicht! javascript wird trotzdem aufgenommen.

    Der Teil danach ((?P<adresse>.+?)(?=\")) bastelt wieder eine Gruppe namens 'adresse' und füllt sie mit dem Teil nach 'http://' usw. usf.! Aber zur Zeit sind eben noch diese javascript-Blöcke enthalten.

    Weiß jemand von euch, wie ich die javascript-Geschichten rausfiltern kann?



  • Mit dem Format kenne ich mich nicht wirklich aus, aber rein vom logischen solltest du das "nicht java\1:;" mit in die Gruppe "Protokoll" reinpacken.



  • Hm, das paßt nicht so wirklich ins Mathe-Forum. Möglicherweise findest Du in Rund um die Programmierung mehr Leute, die sich damit auskennen. Ich verschiebe Dich mal.



  • Dieser Thread wurde von Moderator/in Jester aus dem Forum Mathematik in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Ich weiß, das ist vielleicht nicht unbedingt eine Antwort, aber evtl. kannst du hiermit den Fehler besser nachvollziehen: http://www.cix88.de/projekte/regexp/index.php


Anmelden zum Antworten