stefankittel
Goto Top

Hilfe für reguläre Ausdrücke für HTML und CSS für href, src und url gesucht

Hallo,

ich bin der Meinung, dass ich relativ viel kann, aber reguläre Ausdrücke gehören nicht dazu.

Für eine Software versuche ich mich daran reguläre Ausdrücke zu erstellen um Links in HTML- und CSS-Dateien zu finden.
Sollte ja eigentlich ganz einfach sein, aber HTML is a bitch und 99% der Beispiele sind nicht vollständig.

1. url
Beispiel:
url("wp-content/plugins/accordions/assets/global/webfonts/fa-brands-400.woff")  
Mein Ausdruck:
((url *\( *)["']*)(.*?)( *["']* *(\)))  

Es könnte auch so aussehen
url ( "wp-con()tent/plugins/accordions/assets/global/webfonts/fa-brands-400.woff" )  
url ( wp-content/plugins/accordions/assets/global/webfonts/fa-brands-400.woff )

Mein Problem: Wenn am Anfang also ein " ist, darf er auf weitere Klammer nicht reagieren, denn das sind unter Linux gültige Dateinamen.
url("wp-con)tent/plugins/accordions/assets/global/webfonts/fa-brands-400.woff")  

Meine Beispiele.
Der Syntax ist eigentlich fehlerhaft, kommt in freier Wildbahn aber häufiger vor.

url(wp-content/plugins/accordions/assets/global/webfonts/fa-brands-400.woff)
url("wp-content/plugins/accordions/assets/global/webfonts/fa-brands-400.woff")  
url('wp-content/plugins/accordions/assets/global/webfonts/fa-brands-400.woff')  
url ( wp-content/plugins/accordions/assets/global/webfonts/fa-brands-400.woff )
url ( "wp-content/plugins/accordions/assets/global/webfonts/fa-brands-400.woff" )  
url ( 'wp-content/plugins/accordions/assets/global/webfonts/fa-brands-400.woff' )  

url(wp-content/plugins/accordions/assets/global/webfonts/fa-brands-400.woff)
url("wp-con)tent/plugins/accordions/assets/global/webfonts/fa-brands-400.woff")  
url('wp-cont)ent/plugins/accordions/assets/global/webfonts/fa-brands-400.woff')  
url ( wp-content/plugins/accordions/assets/global/webfonts/fa-brands-400.woff )
url ( "wp-con)tent/plugins/accordions/assets/global/webfonts/fa-brands-400.woff" )  
url ( 'wp-cont)ent/plugins/accordions/assets/global/webfonts/fa-brands-400.woff' )  

2. src/href
Beim Ausdruck:
(href *= *["']*)(.*?)( *["']*/ *)  

<link rel='stylesheet' id='base-css'  href='wp-content/themes/biopic/stylesheets/base.css?ver=5.1.2' type='text/css' media='all' />  
<link rel='stylesheet' id='base-css'  href="wp-content/themes/biopic/stylesheets/base.css?ver=5.1.2" type='text/css' media='all' />  
<link rel='stylesheet' id='base-css'  href=wp-content/themes/biopic/stylesheets/base.css?ver=5.1.2 type='text/css' media='all' />  
<link rel='stylesheet' id='base-css'  href = 'wp-content/themes/biopic/stylesheets/base.css?ver=5.1.2' type='text/css' media='all' />  
<link rel='stylesheet' id='base-css'  href = "wp-content/themes/biopic/stylesheets/base.css?ver=5.1.2" type='text/css' media='all' />  
<link rel='stylesheet' id='base-css'  href = wp-content/themes/biopic/stylesheets/base.css?ver=5.1.2 type='text/css' media='all' />  

<link rel='stylesheet' id='base-css'  href='wp-content/themes/biopic/stylesheets/base.css?ver=5.1.2'/>  
<link rel='stylesheet' id='base-css'  href="wp-content/themes/biopic/stylesheets/base.css?ver=5.1.2"/>  
<link rel='stylesheet' id='base-css'  href=wp-content/themes/biopic/stylesheets/base.css?ver=5.1.2/>  
<link rel='stylesheet' id='base-css'  href = 'wp-content/themes/biopic/stylesheets/base.css?ver=5.1.2'/>  
<link rel='stylesheet' id='base-css'  href = "wp-content/themes/biopic/stylesheets/base.css?ver=5.1.2"/>  
<link rel='stylesheet' id='base-css'  href = wp-content/themes/biopic/stylesheets/base.css?ver=5.1.2/>  

Wenn am Anfang " oder ' sind muss es auch damit enden.
Wenn am Anfang nichts davon ist, kann das Ende ein Leerzeichen, > oder /> sein.

Hat da bitte mal Jemand Mitleid mit mir?
Danke!

Content-ID: 494580

Url: https://administrator.de/contentid/494580

Ausgedruckt am: 22.11.2024 um 05:11 Uhr

SeaStorm
Lösung SeaStorm 14.09.2019 aktualisiert um 01:19:00 Uhr
Goto Top
hi

Oha ...

Ich denke so sollte das zumindest mit dem ersten Case klappen
(url *\( *(['"]*))(.*?)\2 *\)  
https://regex101.com/r/Hbj8aP/55
StefanKittel
StefanKittel 14.09.2019 aktualisiert um 07:33:13 Uhr
Goto Top
Zitat von @SeaStorm:
(url *\( *(['"]*))(.*?)\2 *\)  
https://regex101.com/r/Hbj8aP/55
Das sieht schon mal gut aus.... Vielen Dank dafür
140913
Lösung 140913 14.09.2019 aktualisiert um 10:25:23 Uhr
Goto Top
lcer00
lcer00 14.09.2019 um 11:35:25 Uhr
Goto Top
Hallo

Google mal nach „regular expressions cookbook“, findet sich als pdf.

Grüße

lcer
clubmaster
clubmaster 16.09.2019 um 02:43:17 Uhr
Goto Top
Ich kann dir das Repository von tomnomnom für Regex-Pattern empfehlen: tomnomnom/gf

Ist in Go geschrieben und auch schon vorkompiliert unter Releases. Damit kannst du auch eigene Pattern erstellen und auf der Commandline pipen | . Ist wirklich ein tolles und nützliches Tool.

Urls pipe ich mit: "https?://[^\"\\'> ]+" und IP´s: "([0-9]{1,3}[\\.]){3}[0-9]{1,3}" siehe Screenshot

gf
140913
140913 17.09.2019 aktualisiert um 11:33:55 Uhr
Goto Top
Zitat von @clubmaster:
Urls pipe ich mit: "https?://[^\"\\'> ]+" und IP´s: "([0-9]{1,3}[\\.]){3}[0-9]{1,3}" siehe Screenshot
Hat nur leider rein gar nichts mit dem Thread zu tun, und hilft hier auch nicht. Btw die Pattern sind ebenso fehlerhaft bzw. unvollständig nach RFC.
clubmaster
clubmaster 17.09.2019 um 16:01:49 Uhr
Goto Top
Warum sollte das nach RFC falsch sein? Funktioniert einwandfrei... Es ist ein go-tool face-wink
regex
140913
140913 17.09.2019 aktualisiert um 16:10:16 Uhr
Goto Top
Falsch nicht, es erfasst nur nach RFC nicht alle möglichen URL-Variationen also unvollständig im Sinne der Erfassung von URLs, man lese sich https://mathiasbynens.be/demo/url-regex durch.
Und hat mit dem Thread überhaupt nichts zu tun da dein Regex hier überhaupt nichts vom TO gewünschte berücksichtigt, ist also unnötig fehl am Platz.
lcer00
lcer00 17.09.2019 aktualisiert um 16:15:12 Uhr
Goto Top
Hallo,

Zitat von @140913:

und hat mit dem Thread überhaupt nichts zu tun da dein Regex hier überhaupt nichts vom TO gewünschte berücksichtigt.

Ich glaube, dass sich die meisten Forumsmitglieder nicht als alternativer Antwortgenerator verstehen. Viele schreiben hier, weil die den Erfahrungsaustausch schätzen. Die Threads helfen ja oft nicht nur dem TO sondern auch anderen, die hier später mal landen. In diesem Sinne sind solche Belehrungen hier völlig kontraproduktiv. Du hast doch schon Deinen Lösungs-Pluspunkt. Möchtest Du noch Minuspunkte für andere vergeben?

Grüße

lcer
140913
140913 17.09.2019 aktualisiert um 16:21:26 Uhr
Goto Top
Zitat von @lcer00:

Hallo,

Zitat von @140913:

und hat mit dem Thread überhaupt nichts zu tun da dein Regex hier überhaupt nichts vom TO gewünschte berücksichtigt.

Ich glaube, dass sich die meisten Forumsmitglieder nicht als alternativer Antwortgenerator verstehen. Viele schreiben hier, weil die den Erfahrungsaustausch schätzen. Die Threads helfen ja oft nicht nur dem TO sondern auch anderen, die hier später mal landen. In diesem Sinne sind solche Belehrungen hier völlig kontraproduktiv. Du hast doch schon Deinen Lösungs-Pluspunkt. Möchtest Du noch Minuspunkte für andere vergeben?
Nö, nur Kommentare die absolut nichts mit dem Thread zu tun haben sind überflüssig, und bei dem passte nun mal überhaupt nichts auf die eigentliche Frage.