下面以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
通过在 *、+ 或 ? 限定符之后放置 ?,该表达式从"贪心"表达式转换为"非贪心"表达式或者最小匹配。
网友评论