RegexKitLite正则表达式

发表:2013-03-02 19:41:16

1、部署RegexKitLite

RegexKitLite是一个第三方的正则处理类库,使用Object-c中的分类功能实现String正则处理。在使用时首先需要加载到项目中,点击此处下载RegexKitLite

完成后,将其中的Classes目录播放到项目里。由于RegexKitLite基于icu库实现的,所以还需要额外引入libicucore.dylib。如下图所示。

完成后就可以直接以String的形式使用RegexKitLite中的所有方法了。


2、使用RegexKitLite1


1)正则查找

NSString *strUrl = @"字符测试啊。。。http://www.baidu.com这是一个网址";
                                                                                                                                                                                                                                                                   
   //正则字符查询
   if ([strUrl isMatchedByRegex:@"(https?|ftps?)://(www|mail|news).([^./]+).(com|org|net)"]) {
       UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@"正则表达式" message:@"网址正确" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
       [alert show];
       [alert release];
   }

2)正则替换

//正则替换
NSString *oldStr=@"中的替换函数,[b]系统php提供的 字符串中[/b]的替换函数,系统提供php的中的替换函数,[b]系统php提供的 字符串中[/b]的替换函数,系统提供php的";
NSString *regexStr=@"\[b\](.*?)\[\/b\]";
//替换所有[b][/b]标签
NSString *regexWithStr=@"<b>$1</b>";
NSString *newStr=NULL;
newStr=[oldStr stringByReplacingOccurrencesOfRegex:regexStr withString:regexWithStr];
NSLog(@"正则替换%@",newStr);




与PHP相比,在RegexKitLite中使用正则不需要边界符,同时,所有转码符由“单反斜线”变成“双反斜线”,其他的变化并不大。RegexKitLite官方还提供了转换工具,点击此处访问


3、常用匹配正则表达式


匹配特定数字:
^[1-9]d*$    //匹配正整数
^-[1-9]d*$   //匹配负整数
^-?[1-9]d*$   //匹配整数
^[1-9]d*|0$  //匹配非负整数(正整数 + 0)
^-[1-9]d*|0$   //匹配非正整数(负整数 + 0)
^[1-9]d*.d*|0.d*[1-9]d*$   //匹配正浮点数
^-([1-9]d*.d*|0.d*[1-9]d*)$  //匹配负浮点数
^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$  //匹配浮点数
^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$   //匹配非负浮点数(正浮点数 + 0)
^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$  //匹配非正浮点数(负浮点数 + 0)
评注:处理大量数据时有用,具体应用时注意修正

匹配特定字符串:
^[A-Za-z]+$  //匹配由26个英文字母组成的字符串
^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串
^[a-z]+$  //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串
^w+$  //匹配由数字、26个英文字母或者下划线组成的字符串

相关文章