AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Regex: alle html links eines String bekommen?

Regex: alle html links eines String bekommen?

Ein Thema von Pseudemys Nelsoni · begonnen am 18. Feb 2009 · letzter Beitrag vom 19. Feb 2009
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#1

Regex: alle html links eines String bekommen?

  Alt 18. Feb 2009, 10:19
Hallo,

wie kann ich alle links eines HTML Codes bekommen? WIe muss mein Regexpattern dazu aussehen?

Der HTML Code sieht so aus:

Zitat:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Unbenanntes Dokument</title>
</head>

<body>


Bla</p>


Link1</p>


blubb</p>


Link2</p>


Link3 </p>


lala</p>
</body>
</html>

Nun muss ich ja sicher gehen, dass es auch wirklich ein link ist, dazu muss im pattern ja auch "<a href=" vorkommen und dann muss ich danach den Link der in " " steht bekommen.


WIe stell ich das an?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#2

Re: Regex: alle html links eines String bekommen?

  Alt 18. Feb 2009, 10:23
z.B. so:
Code:
[url="http://[^"]([^<]+)[/url]
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.536 Beiträge
 
#3

Re: Regex: alle html links eines String bekommen?

  Alt 18. Feb 2009, 10:31
@Meflin:

Code:
[url="http://foo.bar"][img]xzy.png[/img][/url]
Q.E.D.

Bau rein dass kein "</a>" vorkommen darf, alles andere ist aua.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#4

Re: Regex: alle html links eines String bekommen?

  Alt 18. Feb 2009, 10:34
Danke erstmal euch zwei.

Bei dem Code von Meflin bekomme ich keine Matches :\.

Ich würd den pattern ja auch selber umändern, aber Regexe versteh ich wirklich nicht so...


alcaeus, was meinst du damit? bzw wie stell ich das an? ich weiß bloß, dass mit ^ negiert wird, aber das wars leider auch scho
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#5

Re: Regex: alle html links eines String bekommen?

  Alt 18. Feb 2009, 11:21
Wie wärs damit?
Code:
[url="http://[^"](.*?)[/url]
P.S.: meine obige RegEx matcht bei deinem Beispiel [Beitrag #1] auch. KA was du da falsch machst?!
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#6

Re: Regex: alle html links eines String bekommen?

  Alt 18. Feb 2009, 12:05
Oder noch n bissel universeller:
Code:
<a.*?href=['"].*?[^"]+['"].*?>(.*?)</a>
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#7

Re: Regex: alle html links eines String bekommen?

  Alt 18. Feb 2009, 13:31
@Meflin, danke schonmal.

Wenn ich auf http://www.nettz.de/Service/regexp/index.cgi den Text überprüfe, bekomme ich 3 Resultate und zwar:

Link1
Link2
Link3


Ich brauche aber den Link selbst, nicht die Beschreibung zu diesem. Hast dafür nochmal nen Code parat?

MfG

PS: Wäre nicht schlecht, wenn du mir jeden Schritt des Patterns einmal erklären könntest, damit ich es nachvollziehen kann.

Danke schonmal.
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Regex: alle html links eines String bekommen?

  Alt 18. Feb 2009, 13:34
Einfach das Klammern was du brauchst. Solltest dir vielleicht auch nebenbei noch mal die Hilfe zu RegEx durchlesen ...

Code:
<a.*?href=['"](.*?[^"]+)['"].*?>.*?</a>
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#9

Re: Regex: alle html links eines String bekommen?

  Alt 18. Feb 2009, 13:36
Vielen Dank, das funktioniert!


Ich benutze C#.NET und dort ist die Hilfe sehr beschränkt was Regexes angeht. Ok ich habe auch schon im Internet geguckt, aber dort ist es wiederum zu Umfangreich (für mich) .


Aber nun brauch ich sie ja erstmal nicht mehr.

Danke nochmal.
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#10

Re: Regex: alle html links eines String bekommen?

  Alt 18. Feb 2009, 19:40
Hier die Erklärung zur letzten RegEx (mit der für dich richtigen Klammerung):
Code:
<a.*?href=['"](.*?[^"]+)['"].*?>.*?</a>

Match the characters “<a” literally «<a»
Match any single character that is not a line break character «.*?»
   Between zero and unlimited times, as few times as possible, expanding as needed (lazy) «*?»
Match the characters “href=” literally «href=»
Match a single character present in the list “'"” «['"]»
Match the regular expression below and capture its match into backreference number 1 «(.*?[^"]+)»
   Match any single character that is not a line break character «.*?»
      Between zero and unlimited times, as few times as possible, expanding as needed (lazy) «*?»
   Match any character that is NOT a “"” «[^"]+»
      Between one and unlimited times, as many times as possible, giving back as needed (greedy) «+»
Match a single character present in the list “'"” «['"]»
Match any single character that is not a line break character «.*?»
   Between zero and unlimited times, as few times as possible, expanding as needed (lazy) «*?»
Match the character “>” literally «>»
Match any single character that is not a line break character «.*?»
   Between zero and unlimited times, as few times as possible, expanding as needed (lazy) «*?»
Match the characters “</a>” literally «</a>»
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 23:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf