iOS开发iOS DeveloperiOS学习笔记

iOS 正则表达式

2017-05-31  本文已影响159人  boundlessocean

如果你看过我之前的文章 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
上一篇下一篇

猜你喜欢

热点阅读