ios 正则表达式

  1 简介:
  2 
  3   正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。
  4 
  5 
  6 . :匹配任何单个字符。例如正则表达式“b.g”能匹配如下字符串:“big”、“bug”、“b g”,但是不匹配“buug”,“b..g”可以匹配“buug”。
  7 [ ] :匹配括号中的任何一个字符。例如正则表达式“b[aui]g”匹配bug、big和bag,但是不匹配beg、baug。可以在括号中使用连字符“-”来指定字符的区间来简化表示,例如正则表达式[0-9]可以匹配任何数字字符,这样正则表达式“a[0-9]c”等价于“a[0123456789]c”就可以匹配“a0c”、“a1c”、“a2c”等字符串;还可以制定多个区间,例如“[A-Za-z]”可以匹配任何大小写字母,“[A-Za-z0-9]”可以匹配任何的大小写字母或者数字。 
  8 | :将两个匹配条件进行逻辑“或”运算。z|food 能匹配 "z""food"(z|f)ood 则匹配 "zood""food"  9 
 10 
 11 ( ) :将 () 之间括起来的表达式定义为“组”(group),并且将匹配这个表达式的字符保存到一个临时区域,这个元字符在字符串提取的时候非常有用。把一些字符表示为一个整体。改变优先级、定义提取组两个作用。
 12 *:匹配0至多个在它之前的子表达式,和通配符*没关系。例如正则表达式“zo*”能匹配 “z” 、“zo”以及 “zoo”;因此“.*”意味着能够匹配任意字符串。"z(b|c)*"→zb、zbc、zcb、zccc、zbbbccc。"z(ab)*"能匹配z、zab、zabab(用括号改变优先级)。
 13 + :匹配前面的子表达式一次或多次,和*对比(0到多次)。例如正则表达式9+匹配9、99、999等。 “zo+”能匹配 “zo”以及 “zoo” ,不能匹配"z" 14 
 15 
 16 ? :匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do""does" 。一般用来匹配“可选部分”。
 17 {n} :匹配确定的 n 次。“zo{2}”→zoo。例如,“e{2}” 不能匹配“bed”中的“e”,但是能匹配“seed”中的两个“e”。 
 18 {n,} :至少匹配n次。例如,“e{2,}”不能匹配“bed”中的“e”,但能匹配 “seeeeeeeed”中的所有“e”。
 19 {n,m} :最少匹配 n 次且最多匹配 m 次。“e{1,3}”将匹配“seeeeeeeed”中的前三个“e”。
 20 
 21 
 22 ^: 非运算 a[^b] 除了b以为的字符
 23  \d:代表一个数字,等同于[0-9]
 24  \D:代表非数字,等同于[^0-9]  
 25 \s:代表换行符、Tab制表符等空白字符 
 26 \S:代表非空白字符  
 27 \w:匹配字母或数字或下划线或汉字,即能组成单词的字符 
 28 \W:非\w ,等同于[^\w] 
 29 
 30 
 31 
 32 
 33 
 34 
 35 
 36 
 37 - (void)viewDidLoad
 38 {
 39     [super viewDidLoad];
 40     // Do any additional setup after loading the view, typically from a nib.
 41     
 42     //正则表达式
 43     //.是匹配任意一个字符
 44     NSString *text = @"ab";
 45     NSString *regex = @"a.b";
 46     //[self evaluateWithStr:text regex:regex];
 47 //    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
 48 //    
 49 //    if([predicate evaluateWithObject:text]){
 50 //        NSLog(@"匹配要求");
 51 //    }else{
 52 //        NSLog(@"不匹配要求");
 53 //    }
 54     
 55     //[]匹配括号中的任何一个字符。
 56     [self evaluateWithStr:@"ac" regex:@"a[a-z]"];
 57     
 58     //| :将两个匹配条件进行逻辑 ()之间括起来的表达式定义为“组”(group)
 59     [self evaluateWithStr:@"ab" regex:@"a(a|b)"];
 60     
 61     //*:匹配0至多个在它之前的子表达式
 62     [self evaluateWithStr:@"a" regex:@"a*"];
 63     
 64     //+ :匹配前面的子表达式一次或多次
 65     [self evaluateWithStr:@"aa" regex:@"a+"];
 66     
 67     
 68     //? :匹配前面的子表达式零次或一次
 69     [self evaluateWithStr:@"do" regex:@"do(es)?"];
 70     
 71     
 72     //{n} :匹配确定的 n 次
 73     [self evaluateWithStr:@"doooo" regex:@"do{3}"];
 74     
 75     //{n,} :匹配至少n 次
 76     [self evaluateWithStr:@"dooo" regex:@"do{3,}"];
 77     
 78     //{n,m} :匹配n - m 次
 79     [self evaluateWithStr:@"doooo" regex:@"do{2,3}"];
 80     
 81     // \d:代表一个数字
 82     [self evaluateWithStr:@"2234" regex:@"\\d*"];
 83     
 84     //\w:匹配字母或数字或下划线或汉字
 85     [self evaluateWithStr:@"2" regex:@"\\w"];
 86     
 87     //写一个邮箱的表达
 88     //[email protected]
 89     [self evaluateWithStr:@"[email protected]" regex:@"[A-Za-z0-9_]*@[A-Za-z0-9]*(\\.[A-Za-z]*){1,2}"];
 90     
 91 }
 92 
 93 
 94 -(void)evaluateWithStr:(NSString *)str regex:(NSString *)regex{
 95     NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
 96     
 97     if([predicate evaluateWithObject:str]){
 98         NSLog(@"匹配要求");
 99     }else{
100         NSLog(@"不匹配要求");
101     }
102 }

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。