Regulärer Ausdruck beginnend mit http und endend mit pdf?

8

Ich habe den gesamten HTML-Code einer Seite geladen und möchte alle URLs abrufen, die mit http beginnen und mit pdf enden. Ich habe folgendes geschrieben, was nicht funktioniert hat:

%Vor%

Ich bin ziemlich neu in Regex, aber aus dem, was ich gelernt habe, markiert ^ den Anfang eines Musters und $ markiert das Ende. Was mache ich falsch?

    
Weblurk 07.06.2011, 11:45
quelle

5 Antworten

8

Sie müssen den Zeichen in der Mitte der URL entsprechen:

%Vor%
  • \b entspricht einer Wortgrenze

  • ^ und $ markieren Anfang und Ende der gesamten Zeichenkette . Du willst sie nicht hier haben.

  • [...] entspricht einem beliebigen Zeichen in den Klammern

  • \w entspricht einem beliebigen Wortzeichen

  • + entspricht einem oder mehreren der vorherigen Übereinstimmung

  • ? macht die + eher faul als gierig

SLaks 07.06.2011, 11:48
quelle
3

preg_match( '/http[^\s]+pdf/', $html, $matches );

Entspricht http gefolgt von nicht ( [^...] ) Leerzeichen ( \s ) einmal oder mehrmals ( + ) gefolgt von pdf

    
Billy Moon 07.06.2011 11:52
quelle
1

Probieren Sie das aus,

%Vor%

Sie müssen den Teil zwischen http und pdf abgleichen, was .*? tut.

^ entspricht dem Anfang der Zeichenfolge und $ dem Ende, aber das ist nicht das, was Sie wollen, wenn Sie diese Links aus einem längeren Text extrahieren möchten.

\b passt auf Wortgrenzen

Aktualisieren

Der Vollständigkeit halber würde das .*? immer noch zu viel übereinstimmen, also mit \S*

ausgetauscht werden

\S entspricht einem Nicht-Leerzeichen-Zeichen

    
stema 07.06.2011 11:47
quelle
1

Versuchen Sie Folgendes:

%Vor%

Beachten Sie, dass Sie die preg_match_all() -Funktion hier verwenden müssen, da Sie versuchen, mehr als ein Vorkommen zu finden. ^ und $ funktionieren nicht, da sie nur auf Zeilen- oder Dateigrenzen angewendet werden (abhängig von den verwendeten Modifikatoren).

    
jwueller 07.06.2011 11:48
quelle
0

preg_match( '/^http.*pdf$/', $html, $matches );

ist besser (funktioniert)

    
gnur 07.06.2011 11:48
quelle

Tags und Links