Скажите, у меня есть этот текст:
word1 word2 " word3 //" word4
Мне нужно написать регулярное выражение для комментариев. Мое решение сейчас ((\/\/).*(\n)), в результате чего
((\/\/).*(\n))
регулярное выражение для текста в "" следующем ((\").*(\"))
((\").*(\"))
Это мое решение. Я знаю, что это может быть лучше. Я знаю о Обратной ссылке , но у меня нет с этим опыта.
NSRegularExpression *exp = [NSRegularExpression regularExpressionWithPattern:@"((@\"|\").*?(\"))" options:NSRegularExpressionDotMatchesLineSeparators error:nil]; NSArray *textArr = [exp matchesInString:string options:0 range:NSMakeRange(0, [string length])]; for (NSTextCheckingResult *result in textArr) { // set color for range } // Comments exp = [NSRegularExpression regularExpressionWithPattern:@"(//[^\"\n]*)" options:0 error:nil]; NSArray * arrayComments = [exp matchesInString:string options:0 range:NSMakeRange(0, [string length])]; for (NSTextCheckingResult *resultComment in arrayComments) { BOOL inside = NO; for (NSTextCheckingResult *resultText in textArr) { NSInteger from = resultText.range.location; NSInteger to = resultText.range.location+resultText.range.length; NSInteger now = resultComment.range.location; if (from < now && now < to) { inside = YES; break; } } if (!inside) { // set color for range } }
ответ в моем блоге