RegEx für CSS-Klassen
Harald
- programmiertechnik
0 Juan0 Harald
0 Axel Richter0 Alexander Brock0 MudGuard
Hallo,
ich möchte aus einer CSS-Datei die verschiedenen Definitionen heraussuchen, also z.B. bei:
body, html
{
....
}
h1
{
...
}
a.test:link, a.test:active, a.test:hover
{
...
}
möchte ich eine Liste mit
body
html
h1
a.test:link
a.test:active
a.test:hover
haben.
Soweit funktioniert das mit folgendem Ausdruck:
(\s*([^,{]+))
auch schon, allerdings wird mir nie das erste Element herausgesucht, also ich bekomme zwar a.test:active nud a.test:hover, aber nicht a.test:link und ebenso wenig h1.
Hat jemand eine Lösung für das Problem bzw. einen besseren regulären Ausdruck?
Hi,
(\s*([^,{]+))
war es nicht so, dass ein + bedeutet 0 oder 1 mal und ein * 0 oder mehrmals.
Wenn das nämlich so ist, würde es erklären warum du die ersten Werte nicht bekommst...
MfG,
Juan
Ne leider net,
Hallo,
ich möchte aus einer CSS-Datei die verschiedenen Definitionen heraussuchen, also z.B. bei:
body, html
{
....
}h1
{
...
}a.test:link, a.test:active, a.test:hover
{
...
}möchte ich eine Liste mit
body
html
h1
a.test:link
a.test:active
a.test:hoverhaben.
Soweit funktioniert das mit folgendem Ausdruck:
(\s*([^,{]+))
Nein, denn Dein RegExp passt auf:
....
}h1
und auf:
...
}a.test:link
also:
ein oder kein white-space, gefolgt von mindestens einem Zeichen, welches kein "," und kein "{" ist.
auch schon, allerdings wird mir nie das erste Element herausgesucht,
Doch, aber eben als:
" ... \n}\n\nh1"
und als:
" ... \n}\n\na.test:link"
Das, was Du möchtest, wird mit einfachem RegExp nicht funktionieren. Dazu ist eine komplette Programmlogik notwendig.
viele Grüße
Axel
Hallo Freunde des gehobenen Forumsgenusses,
ich möchte aus einer CSS-Datei die verschiedenen Definitionen heraussuchen, also z.B. bei:
body, html
{
....
}
möchte ich eine Liste mit
body
htmlhaben.
Ich würde das folgendermaßen lösen:
Erstmal alle Zeilenumbrüche und Tabulatoren durch leerzeichen ersetzen.
Dann alle doppelten Leerzeichen durch einfache ersetzen.
Solange die Zeichenkette das Zeichen "{" enthält
Der Selektor ist der String bis zum ersten "{".
Selektor in Array schreiben.
Alles bis zum ersten "}" entfernen.
Eventuell noch das Array durchgehen und @media und @import entfernen,
wenn du die nicht willst. Oder auch gleich beim Parsen drauf achten.
Gruß
Alexander Brock
Hi,
Ich würde das folgendermaßen lösen:
Erstmal alle Zeilenumbrüche und Tabulatoren durch leerzeichen ersetzen.
Dann alle doppelten Leerzeichen durch einfache ersetzen.Solange die Zeichenkette das Zeichen "{" enthält
Der Selektor ist der String bis zum ersten "{".
Selektor in Array schreiben.
Alles bis zum ersten "}" entfernen.
@media print {
.navi { display:none; }
}
p { color: blue; }
ergäbe dann
@media all
als ersten Selektor. Und
} p
als zweiten Selektor.
Oder wie wäre es mit
a:after { content: "}"; }
So einfach ist das nicht mit dem Zerlegen, wenn's allgemeingültig sein soll ...
cu,
Andreas