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