2016-06-21 23 views
1

如何編寫正則表達式來捕獲{字符之前的所有文本,但在同一行上?正則表達式在{字符之前捕獲所有文本 - Objective C

我試過類似如下:

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]]; 
} 

我想樣式下面的CSS代碼使得P是有色和着色爲:

p { 
    color: blue; 
} 

a { 
    color: red; 
} 
+0

順便說一句,你檢查你以前的正則表達式的問題? –

+0

你不必這樣做,但是如果你想使用任何CSS工作,你也可以拒絕以@開頭的匹配(比如@ media或@ font-face),並且通過查看'}'和'{'(或字符串的開頭)來允許選擇器在同一行上 – 4castle

+1

@WiktorStribiżew只是接受了你的答案。 – Apollo

回答

1

我會怎樣寫一個正則表達式來捕獲{字符之前的所有文本,但在同一行?

使用

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

這隻會匹配和捕獲從一開始線的一部分,直到第一{和將匹配{本身。 [^{\r\n]否定字符類只匹配除{,CR和LF以外的字符。

regex demo

要匹配{之前的文本只(不包括{)你可以使用一個前瞻:

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

another regex demo

最後,你也可以「微調「這個匹配在一個懶惰的*?量詞和*(零個或多個空格)的幫助下向前看:

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

然而another demo

+1

我希望我能兩次讚揚這個,Wiktor。我忘了包括我想向前看,但你也預先回答了這個問題!謝謝。 – Apollo

相關問題