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

- (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 *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不支持?<=分隔符,所以网页版测试正则是无法使用?<=的。

你可能感兴趣的:(正则表达式截取字符串之间的字符串(不包括首尾))