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-Key: 494580

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

Printed on: April 18, 2024 at 14:04 o'clock

Member: SeaStorm
Solution SeaStorm Sep 13, 2019 updated at 23:19:00 (UTC)
Goto Top
hi

Oha ...

Ich denke so sollte das zumindest mit dem ersten Case klappen
(url *\( *(['"]*))(.*?)\2 *\)  
https://regex101.com/r/Hbj8aP/55
Member: StefanKittel
StefanKittel Sep 13, 2019, updated at Sep 14, 2019 at 05:33:13 (UTC)
Goto Top
Zitat von @SeaStorm:
(url *\( *(['"]*))(.*?)\2 *\)  
https://regex101.com/r/Hbj8aP/55
Das sieht schon mal gut aus.... Vielen Dank dafür
Mitglied: 140913
Solution 140913 Sep 14, 2019 updated at 08:25:23 (UTC)
Goto Top
Member: lcer00
lcer00 Sep 14, 2019 at 09:35:25 (UTC)
Goto Top
Hallo

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

Grüße

lcer
Member: clubmaster
clubmaster Sep 16, 2019 at 00:43:17 (UTC)
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
Mitglied: 140913
140913 Sep 17, 2019 updated at 09:33:55 (UTC)
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.
Member: clubmaster
clubmaster Sep 17, 2019 at 14:01:49 (UTC)
Goto Top
Warum sollte das nach RFC falsch sein? Funktioniert einwandfrei... Es ist ein go-tool face-wink
regex
Mitglied: 140913
140913 Sep 17, 2019 updated at 14:10:16 (UTC)
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.
Member: lcer00
lcer00 Sep 17, 2019 updated at 14:15:12 (UTC)
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
Mitglied: 140913
140913 Sep 17, 2019 updated at 14:21:26 (UTC)
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.