iOS 正则表达式

作者: boundlessocean | 来源:发表于2017-05-31 14:53 被阅读159次

    如果你看过我之前的文章 NSPredicate让开发更高效 ,就会知道有些时候正则表达式对开发的帮助很大。

    那么你对正则表达式的语法到底理解多少呢,或许之前仅仅是通过浏览器查询的一些常规正则表达式,这篇文章介绍一些正则表达式的语法,以及在iOS中的使用。这将使你脱离现有的正则表达式,根据需求来写出自己想要的正则表达式来匹配结果。

    一、正则表达式在iOS中的使用

    1.正则表达式配合NSPredicate使用

    NSPredicate让开发更高效 详细介绍

    2.正则表达式配合NSRegularExpression

            NSString *expressString = @"what do you want to do?";
            NSError *error = NULL;
            NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"^[a-z]+$"
                                                                                   options:NSRegularExpressionCaseInsensitive
                                                                                     error:&error];
            NSTextCheckingResult *result = [regex firstMatchInString:expressString
                                                             options:0
                                                               range:NSMakeRange(0,[expressString length])];
            if(result){
                NSLog(@"%@",[expressString substringWithRange:result.range]);
            }
    

    3.NSString中使用正则表达式

            NSString *expressString = @"what do you want to do?";
            NSRange range = [expressString rangeOfString:@"^[a-z]+$"
                                                 options:NSRegularExpressionSearch];
            if(range.location != NSNotFound){
                NSLog(@"range :%@",[expressString substringWithRange:range]);
            }
    

    二、正则表达式语法

    1.集合

    a[ef]匹配特定字符  匹配ae.... af….. []中可以放任意多个字符
    [a-z]匹配区间 匹配a-z之间任意一个都可以
    [0-9] 和[0123456789]的功能一样。匹配所有的数字。
    [A-F] 匹配A到F的大写字符。
    [A-Z] 匹配所有的 A 到 Z 的大写字符。
    [a-z] 匹配所有的 a 到 z 的小写字符。
    [A-z] 匹配从 ASCII A 到 ASCII z 的所有字符(不仅仅匹配所有字母,还匹配在 ASCII 表中 A 到 z 中的字符,如 [ 和 ^ 等)。
    [A-Za-z0-9] 匹配所有的大小写字母和数字。
    ^字符是将字符集合中的所有字符都取消匹配
    [a-z] 匹配所有的小写字母,而 [^a-z] 匹配所有的不是小写字母的字符。
    

    2.元字符

    [\b]    退格符
    \f  换页符
    \n  换行
    \r  回车
    \t  制表符
    \v  垂直制表符
    \d  任何数字 (同 [0-9])
    \D  任何非数字 (同 [^0-9])
    \w  所有的文字数字式字符:大小写字母、数字和下划线 (同 [a-zA-Z0-9_])
    \W  (同 [^a-zA-Z0-9_])
    \s  所有的空白字符 (同 [\f\n\r\t\v])
    \S  所有的非空白字符 (同 [^\f\n\r\t\v])
    \   (转义)匹配特殊字符
    |   或者
    

    3.匹配次数

    . 用来匹配一个任意字符                    1
    +元字符表示匹配一个或者多个字符        [1,+∞]
    *零个或更多字符                        [0,+∞]
    ?匹配零个或者一个字符                 [0,1]
    {x,y}   最少匹配x次,最多y次             [x,y]   
    

    4.贪婪模式

    贪婪词加?表示非贪婪
    贪婪量词    非贪婪量词
    *       *?
    +       +?
    {n,}        {n,}?
    

    5.开始、结束

    ^和$,分别用于字符串的开始和结束
    

    6.多行模式

    (?m)可以启用多行模式
    正则表达式:(?m)^[0-9a-zA-Z]{4,}$
    待匹配文本:a1b234ABC+a1b23=4ABCABC123456
    匹配后结果:a1b234ABC+a1b23=4ABCABC123456
    

    相关文章

      网友评论

      本文标题:iOS 正则表达式

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