Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Regex: alle html links eines String bekommen? (https://www.delphipraxis.net/129392-regex-alle-html-links-eines-string-bekommen.html)

alcaeus 18. Feb 2009 20:54

Re: Regex: alle html links eines String bekommen?
 
Moin Meflin,

lass die doppelte Abfrage fuer ' und " im href-Attribut weg. Erstens muesstest du um korrekt zu parsen dann eine entsprechende back-reference nutzen und zweitens ist laut den letzten HTML-Standards eh nur " ein Begrenzer fuer Attributwerte :)

Sowas wuerde deine letzte RegExp auch matchen:
Code:
<a href="foobar'>text</a>
obwohl es komplett zerschossenes HTML ist. Auf der anderen Seite wuerde sowas falsch gematcht werden:
Code:
[url='foobar" und mehr']text[/url]
obwohl es laut dem kaputten HTML-Parsing mancher aelterer Browser durchaus korrekt ist ;)

Greetz
alcaeus

Khabarakh 18. Feb 2009 21:04

Re: Regex: alle html links eines String bekommen?
 
Zitat:

Zitat von Pseudemys Nelsoni
Ich benutze C#.NET und dort ist die Hilfe sehr beschränkt was Regexes angeht.

Die ist ziemlich umfangreich, nur eben kein Tutorial ;) .
Ein schönes deutsches Tut gibt es hier: http://www.regenechsen.de/phpwcms/index.php?regex_allg

PS: Wenn du sowieso nur den Link brauchst, würde ich danach gar nicht mehr weitermatchen. Eine perfekte Lösung ist mit Regexen sowieso nicht erreichbar.

Meflin 19. Feb 2009 16:23

Re: Regex: alle html links eines String bekommen?
 
Moin alci,

du magst prinzipiell Recht haben, aber die Frage ist: Auf was trifft man in der "freien Wildbahn" öfter? Ich glaube die falschen '' gibts relativ häufig. Aber dein zweiter Fall, der zum Mismatch führt, sowas macht ja keiner absichtlich ;) (mit der Backreference haste natürlich Recht, is mir aber grad zu kompliziert :gruebel: )

Aber gut, ansonsten wärs dann:
Code:
[url="(.*?[^"].*?[/url]
Edit: wär das mit Backreference so richtig?
Code:
<a.*?href=(["'])(.*?[^"]+)\1.*?>.*?</a>


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:25 Uhr.
Seite 2 von 2     12   

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