什么是注释语法突出显示的好正则表达式? [英] What's a good regular expression for comment Syntax Highlighting?

查看:74
本文介绍了什么是注释语法突出显示的好正则表达式?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设我有这样的文本:

word1 word2 " word3 //" word4

我需要为注释编写一个regexp。我现在的解决方案是((//).*( )),结果是

""下一个((").*("))中的文本的regexp

推荐答案

这是我的解决方案。我知道可以做得更好。我知道反向引用,但我没有使用经验。

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:@"(//[^"
]*)"
                                                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
    }
}

answer on my blog

这篇关于什么是注释语法突出显示的好正则表达式?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆