Christian Kruse: RegEx, URL bearbeiten

Beitrag lesen

Hallo acid_ice,

[... relative Links aus Dokument filtern ...]

fuer dein Problem sind die Look-Ahead-Patterns wie geschaffen. Du
kannst dein Problem so loesen:

while($doc =~ m~href="(?!http://)([^"]+)"~g) {
  print "URI: $1\n";
}

Das setzt aber vorraus, dass alle Links korrekt mit doppelten
Anfuehrungszeichen umgeben sind. Es bedarf allerdings nur kleiner
Aenderungen, um das zu korrigieren:

while($doc =~ m~href=(?:(["'])(?!http://)(.+?)\1))|(?:(?!http://)(\S+))~g) {
  my $uri = $2 || $3;
  print "URI: $uri\n";
}

Damit solltest du Links der Art href=../../abc, href="../../abc" und
href='../../abc' filtern koennen.

Grüße,
 CK

--
Ich bewundere wirklich den Sinn der Bienen für kollektive Verantwortung. Obwohl sich einzelne Bienen hin und wieder bekämpfen, herrscht zwischen Ihnen grundsätzlich ein starkes Gefühl für Eintracht und Zusammenarbeit. Wir Menschen gelten als sehr viel weiter entwickelt, doch mitunter rangieren wir sogar hinter kleinen Insekten.
http://wwwtech.de/