CSS Parsen mit RexExp
Jörg Peschke
- perl
Hallo,
Ich versuche mich gerade an einer Perl-Funktion, die Stylesheet-Definitionen aus einer CSS-Datei liest, und komme da nicht so recht weiter - vielleicht kann mir jemand helfen...
Naiv gehe ich jetzt erstmal davon aus, dass in einer CSS-Datei nur zwei verschiedene Befehlsblöcke vorkommen können, nämlich:
Mein Regexp, welches mir alle solchen Befehlsblöcke in ein Array spucken soll, sieht bislang so aus:
my @style_definitions = $source =~ /([^@{]*?(@[^;]*?;|{[^}]*}))/gis;
Das klappt schon fast ganz gut.
Mein Problem ist aber, dass er durch die zweifache Klammerung Teile der Suchergebnisse doppelt hat.
Beispiel:
Aus einer CSS-Datei der Form
@import test.css;
h1 li {font-size: 12px;}
würde das folgende Befehlsblöcke finden:
@import url(test.css);
@import url(test.css);
h1 li {font-size: 12px;}
{font-size: 12px;}
Kann ich dem RegExp-Parser irgendwie sagen, dass er in das Arry nur die Suchergebnisse der äußeren Klammerung tun soll?
Danke für die Hilfe schonmal.
gruesse,
Joerg
Hallo,
Hab es
my @style_definitions = $source =~ /([^@{]*?(@[^;]*?;|{[^}]*}))/gis;
my @style_definitions = $source =~ /([^@{]*?@[^;]*?;)|([^@{]*?{[^}]*})/gis;
muss das heissen.
Danke.