AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Regular Expression

Ein Thema von Rapthor · begonnen am 14. Dez 2005 · letzter Beitrag vom 14. Dez 2005
Antwort Antwort
Rapthor

Registriert seit: 30. Nov 2002
139 Beiträge
 
#1

Regular Expression

  Alt 14. Dez 2005, 12:20
Hallo,

ich hoffe das passt hier irgendwie ....

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="javascript:;">...' 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 Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Regular Expression

  Alt 14. Dez 2005, 15:05
sollte das evtl.

(?<!javascript:) ohne den strichpunkt heissen? der kommt ja erst nach dem befehl
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Rapthor

Registriert seit: 30. Nov 2002
139 Beiträge
 
#3

Re: Regular Expression

  Alt 14. Dez 2005, 17:36
Nein, daran lag's nicht.
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Regular Expression

  Alt 14. Dez 2005, 17:42
Hallo!

Eine Frage mal am Rande: Um wleche Sprache gehts? PHP? JavaScript?!
btw: Sollte das ganze nicht in einen String gepackt werden?!

Grüße
Faux
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Rapthor

Registriert seit: 30. Nov 2002
139 Beiträge
 
#5

Re: Regular Expression

  Alt 14. Dez 2005, 17:50
Also es geht bei mir speziell um die Sprache PYTHON, aber Regular Expressions funktionieren überall gleich (sollten sie zumindest). Um mal den PYTHON-Befehl zu zeigen:

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

finditer ist halt eine Funktion, die einen RAW-String erhält und ein Dokument, das mit der im String definierten RegEx durchsucht werden soll.

Der RegEx enthält auch keinen Syntaxfehler. Den hätte mir das re-Modul schon gemeldet.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz