Regex, um fehlende Selektoren zu ungültigem CSS hinzuzufügen

8

Ich versuche, ungültiges CSS wie folgt zu transformieren:

{color:red}

und mach es wie folgt gültig:

.missing_selector{color:red}

Beispiel CSS:

%Vor%

Mein aktueller regulärer Ausdruck:

/([^a-z0-9\)\];\-_]*\{)/i

Live-Test:

Ссылка

    
user2266497 26.02.2016, 18:40
quelle

1 Antwort

6

Die Lösung

Sie müssen das verwenden:

%Vor%

Ersetzen durch:

%Vor%

Die (?<=\A|\}) stellt sicher, dass es nur etwas gibt (außer whitespace), bevor% code_% der Anfang der Zeichenfolge oder ein schließendes { ist. (Danke an Casimir et Hippolyte um auf das Problem dort hinzuweisen.)

Hier ist eine regex101-Demo .

Warum Ihr Versuch fehlgeschlagen ist

Dies

%Vor%

macht nicht, was Sie denken.

  • } startet eine Erfassungsgruppe
  • ( benötigt ein anderes Zeichen als [^a-z0-9\)\];\-_] , a-z , 0-9 , ) , ] , ; oder - .
  • _ Null oder mehrmals
  • * benötigt \{
  • { beendet die Erfassungsgruppe

Aber es hat kein ) , also ist es nicht an den Anfang einer Zeile gebunden, noch prüft es, was vor dem ^ steht (was nur der Anfang der Zeichenkette, Leerzeichen oder a sein sollte) %Code%). Als Ergebnis wird es überall dort übereinstimmen, wo Sie eine Reihe von Leerzeichen oder andere nicht-alphanumerische Zeichen haben (ausgenommen { ) in Ihrem Beispiel-CSS:

Sehen Sie sich diese regex101-Demo an, um eine ausführlichere Erklärung zu erhalten, und das Beispiel entspricht .

    
Ed Cottrell 26.02.2016, 18:49
quelle

Tags und Links