正则表达式截取字符串之间的字符串(不包括首尾)

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    NSString *txt = @"abc123bcdabc234bcd";
    
    NSRegularExpression *regular = [NSRegularExpression regularExpressionWithPattern:@"(?<=abc)(.*?)(?=bcd)"
                                                                             options:NSRegularExpressionCaseInsensitive
                                                                               error:nil];
    
    NSArray<NSTextCheckingResult *> *resultArr = [regular matchesInString:txt
                                                                  options:NSMatchingReportCompletion
                                                                    range:NSMakeRange(0, txt.length)];
    
    for (NSTextCheckingResult *res in resultArr) {
        
        NSLog(@"---%@", NSStringFromRange(res.range));
        
        NSString *str = [txt substringWithRange:res.range];
        
        NSLog(@"===%@", str);
    }
}

输出:

---{3, 3}
===123
---{12, 3}
===234


解释正则表达式

?<=abc表示的是abc的后面的字符串,但不包括abc。
?=bcd表示的是bcd的前面的字符串,但不包括bcd。
()是为了方便阅读。

注意:js不支持?<=分隔符,所以网页版测试正则是无法使用?<=的。

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

推荐阅读更多精彩内容