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

下面以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

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 资源来自菜鸟教程:http://www.runoob.com/regexp/regexp-syntax.html ...
    贼厉害阅读 10,621评论 0 6
  • 概述 正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查...
    梅_梅阅读 214评论 0 1
  • Python中的正则表达式(re) import rere.match #从开始位置开始匹配,如果开头没有则无re...
    BigJeffWang阅读 7,166评论 0 99
  • 正则表达式 语法 正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),...
    LTOVE阅读 901评论 0 0
  • 默•白 远心 你不说什么 什么都不说,不是沉默 一条白色的路,延伸到天边 我穿过,目光融化碰到的雪花 离开大地,离...
    远心笃行阅读 190评论 0 0