美文网首页
「iOS」中3种正则表达式的使用与比较

「iOS」中3种正则表达式的使用与比较

作者: 陳云峰 | 来源:发表于2017-05-13 13:27 被阅读19次

    iOS中有三种方式来实现正则表达式的匹配。现在将他们都记录在这里:

    1.利用NSPredicate(谓词)匹配

    例如匹配有效邮箱:

    NSString *email = @"admin@ruanman.net";
    NSString*regex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
    NSPredicate*predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
    BOOL isValid = [predicate evaluateWithObject:email];
    

    谓词匹配比较灵活,但是需要有谓词的相关知识。

    2.利用rangeOfString:option:直接查找

    NSString*searchText =@"// Do any additional setup after loading the view, typically from a nib.";
    NSRangerange = [searchText rangeOfString:@"(?:[^,])*\\."options:NSRegularExpressionSearch];
    if(range.location! = NSNotFound) {
        NSLog(@"%@", [searchText substringWithRange:range]);
    }
    

    options中设定NSRegularExpressionSearch就是表示利用正则表达式匹配,会返回第一个匹配结果的位置。

    3.使用正则表达式类

    使用系统的正则表达式类(NSRegularExpression)会返回匹配的多个结果。

    NSString*searchText = @"// Do any additional setup after loading the view, typically from a nib.";
    NSError*error = NULL;
    NSRegularExpression*regex = [NSRegularExpressionregularExpressionWithPattern:@"(?:[^,])*\\."options:NSRegularExpressionCaseInsensitiveerror:&error];
    NSTextCheckingResult*result= [regex firstMatchInString:searchText options:0range:NSMakeRange(0, [searchText length])];
    if(result) {
        NSLog(@"%@\n", [searchText substringWithRange:result.range]);
    }
    

    相关文章

      网友评论

          本文标题:「iOS」中3种正则表达式的使用与比较

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