美文网首页
正则表达式中的贪婪匹配和非贪婪匹配

正则表达式中的贪婪匹配和非贪婪匹配

作者: 格雷s | 来源:发表于2019-07-16 15:59 被阅读0次

    下面以iOS oc 代码为例

    NSString *test1 = @"<H1>Chapter 1 - 介绍正则表达式</H1>";
        //贪婪匹配,会从最开始的 < 匹配到最后的 >
        NSString *reg1 = @"<.*>";
        //非贪婪匹配,但是会匹配出两个结果
        NSString *reg2 = @"<.*?>";
        //非贪婪匹配,只匹配前面一个<H1>
        NSString *reg3 = @"<\\w+?>";
        NSArray<NSTextCheckingResult*> *matchs1 = [test1 matchesWithRegex:reg1];
        NSArray<NSTextCheckingResult*> *matchs2 = [test1 matchesWithRegex:reg2];
        NSArray<NSTextCheckingResult*> *matchs3 = [test1 matchesWithRegex:reg3];
        for (NSTextCheckingResult *match in matchs1) {
            NSLog(@"matchs1***%@",NSStringFromRange(match.range));
        }
        
        for (NSTextCheckingResult *match in matchs2) {
            NSLog(@"matchs2***%@",NSStringFromRange(match.range));
        }
        
        for (NSTextCheckingResult *match in matchs3) {
            NSLog(@"matchs3***%@",NSStringFromRange(match.range));
        }
    

    输出结果


    image.png

    通过在 *、+ 或 ? 限定符之后放置 ?,该表达式从"贪心"表达式转换为"非贪心"表达式或者最小匹配。

    相关文章

      网友评论

          本文标题:正则表达式中的贪婪匹配和非贪婪匹配

          本文链接:https://www.haomeiwen.com/subject/glstlctx.html