IOS正则表达式的实现
来源:互联网 发布:网络诈骗套路 编辑:程序博客网 时间:2024/04/30 22:56
ios从4.0开始支持正则表达式。具体涉及到的类是:
NSRegularExpression
NSTextCheckingResult
有了这个内置的ios正则表达式函数,可以不用RegexKitLite了。现在比较强的正则库是PCRE的,mac上PCRE的实现见:
http://regexkit.sourceforge.net/
两个例子说明一下NSRegularExpression的用法:
- -(void)parseString{
- //组装一个字符串,需要把里面的网址解析出来
- NSString *urlString=@"sfdsfhttp://www.baidu.com";
- //NSRegularExpression类里面调用表达的方法需要传递一个NSError的参数。下面定义一个
- NSError *error;
- //http+:[^\\s]* 这个表达式是检测一个网址的。
- NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"http+:[^\\s]*" options:0 error:&error];
- if (regex != nil) {
- NSTextCheckingResult *firstMatch=[regex firstMatchInString:urlString options:0 range:NSMakeRange(0, [urlString length])];
- if (firstMatch) {
- NSRange resultRange = [firstMatch rangeAtIndex:0];
- //从urlString当中截取数据
- NSString *result=[urlString substringWithRange:resultRange];
- //输出结果
- NSLog(@"%@",result);
- }
- }
- }
NSRegularExpression功能还是比较强大的,支持正则嵌套分组,下面是例子:
- NSString * tmp = [NSString stringWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"dreamcafe.rtf" ofType:nil]
- encoding:NSUTF8StringEncoding
- error:nil];
- // NSRange r;
- NSString *regExStr = @"hbhWxTime[\"\']><.*?>(.+?)<";
- NSError *error = NULL;
- NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regExStr
- options:NSRegularExpressionCaseInsensitive
- error:&error];
- __block NSMutableArray * timeTimes = [NSMutableArray array];
- [regex enumerateMatchesInString:tmp options:0 range:NSMakeRange(0, [tmp length]) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {
- NSLog(@"timeTimes = %@",[tmp substringWithRange:[result rangeAtIndex:1]]);
- [timeTimes addObject:[tmp substringWithRange:[result rangeAtIndex:1]]];
- }];
- /*注释:
- [result rangeAtIndex:0] yuresult.range 等价
- */
- 说明:
- 匹配结果:
- NSTextCheckingResult
- !!!用range来标示匹配到的每一个子表达式/分组的。既通过substringWithRange:才能获取到某个子表达式匹配到的字符串
- range
- resultType
- numberOfRanges 匹配到的分组/子表达式个数
- – rangeAtIndex: 获取第几个子表达式
- IOS正则表达式的实现
- IOS正则表达式的用法
- iOS正则表达式的使用
- IOS正则表达式的用法
- ios正则表达式的使用
- ios正则表达式的使用
- IOS正则表达式的用法
- ios常用的正则表达式
- IOS正则表达式的用法
- IOS正则表达式的使用
- ios 常用的正则表达式
- iOS 常用的正则表达式
- iOS 常用的正则表达式
- iOS 正则表达式的使用
- IOS 正则表达式的坑
- iOS正则表达式的使用
- iOS-正则表达式的使用
- iOS常用的正则表达式
- iOS学习之UINavigationController详解与使用(一)添加UIBarButtonItem
- 独立开发者:走向全能的五大技能
- 基于S3C2440的Linux-3.6.6移植——devfs文件系统的IIC应用
- 堆栈问题的解析
- HDU 1573 X问题 同余方程 竟然wa在条件 答案是正整数上。。无语
- IOS正则表达式的实现
- How to Transfer Files Using PuTTY
- oracle11g升级PSU详细步骤
- C#读取被进程占用的文件
- jQuery validate 根据 asp.net MVC的验证提取简单快捷的验证方式(jquery.validate.unobtrusive.js)
- svchost.exe是什么进程
- VirtualBox安装增强功能的终极办法,安全,成功率目前100%
- 电信光猫
- GTK 信号的 创建 发射 链接