zoukankan      html  css  js  c++  java
  • iOS正则表达式的使用与比较

    转帖:http://blog.163.com/nijino_saki/blog/static/80092144201347101658511/

    1.利用NSPredicate(谓词)匹配
    例如匹配有效邮箱:
    NSString *email = @“nijino_saki@163.com”;

        NSString *regex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}";

        NSPredicate *predicate = [NSPredicatepredicateWithFormat:@"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.";

        NSRange range = [searchText rangeOfString:@"(?:[^,])*\." options:NSRegularExpressionSearch];

        if (range.location != NSNotFound) {

            NSLog(@"%@", [searchText substringWithRange:range]);

        }

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

     

    3.使用正则表达式类

        NSString *searchText = @"// Do any additional setup after loading the view, typically from a nib.";    

        NSError *error = NULL;

        NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(?:[^,])*\." options:NSRegularExpressionCaseInsensitive error:&error];

        NSTextCheckingResult *result = [regex firstMatchInString:searchText options:0 range:NSMakeRange(0, [searchText length])];

        if (result) {

            NSLog(@"%@ ", [searchText substringWithRange:result.range]);

        }

    使用系统的正则表达式类(NSRegularExpression)会返回匹配的多个结果。
     
    小结:
    第一种匹配需要学习NSPredicate的写法,需要查阅苹果相关技术文档;如果只关心第一个匹配的结果,第二种匹配较为简洁;如果需要匹配多个结果,同时匹配多次,第三种方式效率会更高。

     

  • 相关阅读:
    Gym 101149I: It's the Police (图,思维)
    把ORM封装成一个类(linq to entity)
    jquery跨域,getJson跨域解决方案
    Jquery中AJAX参数详细列表:
    Multipart forms from C# client
    “ThreadPool 对象中没有足够的自由线程来完成操作”的现象和解决办法
    .NET垃圾回收 问题、建议
    C# HttpWebRequest保存cookies模拟登录的方法
    基础连接已经关闭:服务器关闭了本应保持活动状态的连接 解决方法
    C# 模拟上传图片
  • 原文地址:https://www.cnblogs.com/zixiadaxian/p/4361908.html
Copyright © 2011-2022 走看看