2016-06-21 13 views
1

Wie würde ich eine Regex schreiben, um den gesamten Text vor dem {Zeichen, aber in der gleichen Zeile zu erfassen?Regex zum Erfassen aller Texte vor {Zeichen - Objective C

Ich habe versucht, so etwas wie die folgende:

pattern = @"(\{)"; 
regex = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:&error]; 
matches = [regex matchesInString:self options:0 range: searchedRange]; 
for (NSTextCheckingResult* match in matches) { 
    [string addAttribute:NSForegroundColorAttributeName value:  [UIColor colorFromHexString:@"#C41A16"] range:[match range]]; 
} 

Ich versuche, den folgenden CSS-Code so zu gestalten, dass p gefärbt ist und ein gefärbt ist:

p { 
    color: blue; 
} 

a { 
    color: red; 
} 
+0

BTW, haben Sie Ihre vorherige Frage Regex überprüfen? –

+0

Sie müssen das nicht tun, aber wenn Sie dies mit einem beliebigen CSS machen wollen, können Sie auch Übereinstimmungen ablehnen, die mit '@' beginnen (wie '@ media' oder' @ font-face'), und erlauben Selektoren auf der gleichen Linie zu sein, indem Sie einfach zwischen '}' und '{' (oder Anfang der Zeichenkette) schauen – 4castle

+1

@ WiktorStribiżew Yep nur Ihre Antwort akzeptiert. – Apollo

Antwort

1

Wie würde ich eine Regex schreiben, um den gesamten Text vor dem { Zeichen, aber in der gleichen Zeile zu erfassen?

Verwenden

pattern = @"(?m)^([^{\r\n]*)\\{"; 

Dies wird nur einen Teil der Linie von Anfang an bis zum ersten { passen und erfassen und wird die { selbst entsprechen. Die [^{\r\n] negierte Zeichenklasse entspricht nur einem anderen Zeichen als {, CR und LF.

Siehe regex demo

vor den { nur den Text entsprechen (mit Ausnahme von {) Sie einen Look-Ahead verwenden:

pattern = @"(?m)^[^{\r\n]*(?=\\{)"; 
          ^^^^^^^ 

another regex demo Siehe

Und schließlich können Sie auch „trim "Das Spiel mit Hilfe eines faulen *? Quantors und der * (null oder mehr Leerzeichen) im Lookahead:

pattern = @"(?m)^[^{\r\n]*?(?= *\\{)"; 

Doch another demo

+1

Ich wünschte, ich könnte das zweimal verbessern, Wiktor. Ich habe vergessen zu erwähnen, dass ich nachschauen möchte, aber Sie haben auch diese Frage präventiv beantwortet! Vielen Dank. – Apollo

Verwandte Themen