Какое хорошее регулярное выражение для подсветки синтаксиса комментариев?

#ios #regex #syntax-highlighting #nsregularexpression

#iOS #регулярное выражение #подсветка синтаксиса #nsregularexpression

Вопрос:

Допустим, у меня есть этот текст:

 word1 word2 " word3 //" word4
  

Мне нужно написать регулярное выражение для комментариев. Мое решение сейчас ((//).*(n)) , которое приводит к введите описание изображения здесь

регулярное выражение для текста в «» далее ((").*("))

Ответ №1:

Это мое решение. Я знаю, что это может быть лучше. Я знаю о обратной ссылке, но у меня нет опыта работы с этим.

 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 amp;amp; now < to) {
            inside = YES;
            break;
        }
    }
    if (!inside) {
        // set color for range
    }
}
  

ответ в моем блоге