2017-04-20 3 views
-3

Ich schreibe Code, um die Klassen und IDs aus verkleinerten CSS-Datei in Java zu filtern, aber ich bin beim Schreiben der Regex dafür stecken. Ich habe es auf der regexr-Website geschrieben und konvertiere es nach Java, aber es gibt mir statt der Wörter Zeichen als Ergebnis. meine regex/Java-Code wie folgt aussieht:Java Regex Ergebnisse Zeichen anstelle von Wörtern

/*HEADER*/header{height:180px;} header.fixed{position:fixed;top:0;right:0;height:70px;width:100%;display:block;z-index:1000;background-color:white;-webkit-transition:width2s,height0.2s;transition:width2s,height0,2s;} header.fixed.logo-background{background-image:url('../img/WEB_MOBILE_03.jpg');background-size:auto80%;background-position:auto5%;-webkit-transition:width2s,height0.2s;transition:width2s,height0,2s;} 

Does:

List<String> allMatches = new ArrayList<String>(); 
     Matcher m = Pattern.compile("[a-zA-Z#-_](?![^{]*})") 
      .matcher(cssLine); 
     String line = ""; 
     while (m.find()) { 
      allMatches.add(m.group()); 
     } 

Wenn ich alle Elemente aus dem Array drucke ich ein Ergebnis bekommen wie

a 
    v 
    a 
    d 

Der Eingang wie dieser ist Wer weiß, warum mir das nicht nur Chars wie "header.fixed" gibt?

+2

ein Parser verwenden nicht – Jens

+0

Fragen regex Debug-Hilfe zu suchen („warum nicht dieser Code zu arbeiten?“) Muss das gewünschte Verhalten umfasst, um ein bestimmtes Problem oder Fehler und den kürzesten Code notwendig, um es in der Frage selbst zu reproduzieren. Fragen ohne eine klare Problemstellung sind für andere Leser nicht nützlich. Siehe: Erstellen eines [mcve]. – GhostCat

+0

Bitte beachten Sie auch, dass der dritte Strich in den eckigen Klammern an die letzte Position verschoben werden sollte: '[a-zA-Z # _-]'. Sonst enthält die Klassendefinition alles zwischen '#' und '_' und dieser Bereich enthält'; ',': '' '' zum Beispiel, die Sie hier wahrscheinlich nicht zuordnen möchten. –

Antwort

1

Hinzugefügt + zu Ihrem Regex, so ist es jetzt ([a-zA-Z#-_]+)(?![^{]*}).

Ausgabe

/*HEADER*/header 
header.fixed 
header.fixed.logo-background 
Verwandte Themen