2017-10-05 2 views
0

Tor

ersetzen Hosts und Pfade (Standorte), aber halten Sie die Dateinamen (sie sind unverändert).Regex - get URL-Protokoll, Host, Pfad, aber Dateiname nicht - PCRE

URL ohne Sub-Domain - nicht

funktioniert

Diese für Host arbeitet (Domänen), die haben, sind mindestens eine Sub-Domain (zB ‚www.somedomain.com‘), aber nicht den Weg nur mit dem Domain bekommen + TLD (zB 'somedomain.com')

(http[s]?:\/\/([^:\/\s]+)(\/\w+)*\/)+

In den folgenden HTML Code

junk before tag <img src="https://somedomain.com/wp-content/uploads/2017/10/someimage.jpg" alt="" />Random text after 

Ein Motor PCRE wird nur erfassen:

https://somedomain.com/ 

URL mit Sub-Domain - arbeitet

Im folgenden HTML-Schnipsel (Domain hat eine Sub-Domain)

junk before tag <img src="https://www.somedomain.com/wp-content/uploads/2017/10/someimage.jpg" alt="" />Random text after 

A PCRE-Engine die gesamte URL erfasst (für die Datei speichern):

https://www.somedomain.com/wp-content/uploads/2017/10/ 

Frage

Wie kann ich einstellen regex die vollständige Protokoll zu erfassen, Domäne und Pfad (aber nicht Dateiname) für img src="" URLs, die Subdomains sowie diejenigen ohne Subdomains haben?

+0

So im zweiten Beispiel, das Sie 'www.somedomain.com' zurückkehren wollen? Ich weiß nicht genau, was genau die gewünschte Ausgabe ist. – CAustin

+0

Im ersten Beispiel möchte ich 'https: // somedomain/wp-content/uploads/2017/10 /', aber ich bekomme nur 'https: // somedomain /'. 2. Beispiel funktioniert wie vorgesehen. – Baker

Antwort

1
https?:\/\/(?:[^\/ ]*\/)* 

Demo here.

Erklärung

http  //Should start with http 
s?  // s is optional 
:\/\/  // should follow up with :// 
(?:  //START Non capturing group 
[^\/ ]* //Any character but a/or a space 
\/  //Ends with/
)   //END Non capturing group 
*   //Repeat non-capturing group 
+0

Das hat den Trick gemacht. Vielen Dank. – Baker