//组装一个字符串,把里面的网址解析出来
NSString *urlString = @"sfdshttp://www.baidu.com";
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);
}
}
输出结果为:
[1302:403] http://www.baidu.com
可见通过iOS自带的正则表达式的类可以达到过滤和筛选字符串的功能。
还有其他两种正则表达式的用法:
  1.利用NSPredicate(谓词)匹配
例如匹配有效邮箱:
NSString *email = @“nijino_saki@163.com”;
NSString *regex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
BOOL isValid = [predicate evaluateWithObject:email];
谓词匹配比较灵活,但是需要有谓词的相关知识。
 2.利用rangeOfString:option:直接查找
NSString *searchText = @"// Do any additional setup after loading the view, typically from a nib.";
NSRange range = [searchText rangeOfString:@"(?:[^,])*\\." options:NSRegularExpressionSearch];
if (range.location != NSNotFound) {
NSLog(@"%@", [searchText substringWithRange:range]);
}
options中设定NSRegularExpressionSearch就是表示利用正则表达式匹配,会返回第一个匹配结果的位置。
小结:
第一种匹配需要学习NSPredicate的写法,需要查阅苹果相关技术文档;如果只关心第一个匹配的结果,第二种匹配较为简洁;如果需要匹配多个结果,同时匹配多次,第三种方式效率会更高。
最新内容请见作者的GitHub页:http://qaseven.github.io/

iOS中系统自带正则表达式的应用相关推荐

  1. android系统旁边有一个锁,Android中系统自带锁WalkLock与KeyguardLock用法实例详解

    本文实例讲述了Android中系统自带锁WalkLock与KeyguardLock用法.分享给大家供大家参考,具体如下: WalkLock - 顾名思义 唤醒锁 点亮屏幕用的 KeyguardLock ...

  2. iOS 拦截系统自带的Pop事件

    拦截系统自带的Pop事件 首先,在开发中我遇到一个问题,用故事版将控制器连接起来,之后就有了系统自带的返回按钮(大家都知道,说的很直白). 当我想点击返回按钮的时候,根据自己的情况再确定反不反回上一个 ...

  3. ios开发系统自带推送(ios自学笔记)

    关于ios系统子弟的推送.放在这里和大家分享 APNS的推送机制 首先我们看一下苹果官方给出的对ios推送机制的解释.如下图 Provider就是我们自己程序的后台服务器,APNS是Apple Pus ...

  4. Yigo平台中系统自带的五个系统字段值

    如图: 系统字段不允许编辑,不允许删除 一·OID是主表的对象标识,SOID用于定义其他表与主表之间的关系.如图所示: OID:对象标识,是一条数据的唯一标识 SOID:主对象标识,用来主表跟其他表进 ...

  5. ios获取系统自带的文字蓝色色值

    要获取上面的蓝色,用取色器取出的颜色又不对,怎么办?一句话就搞定了 UIColor *textColor = self.view.tintColor;

  6. Andorid11系统自带Dialer不是默认应用

    项目中系统自带Dialer应用不是默认应用,导致输入暗码不能启动工程模式. 1.加载默认支持的role RoleManagert和RoleManagerService主要用来管理默认应用设置的,Rol ...

  7. android 系统自带主题和样式

    android中自带的主题(theme)的集锦: •android:theme="@android:style/Theme.Dialog"   将一个Activity显示为对话框模 ...

  8. 【Android】系统自带的主题与样式(theme and style)

    android中自带的主题(theme)的集锦: •android:theme="@android:style/Theme.Dialog"   将一个Activity显示为对话框模 ...

  9. iOS程序中调用系统自带应用(短信,邮件,浏览器,地图,appstore,拨打电话,iTunes,iBooks )...

    在网上找到了下在记录下来以后方便用 在程序中调用系统自带的应用,比如我进入程序的时候,希望直接调用safar来打开一个网页,下面是一个简单的使用: 查看更多iPhone应用程序的调用和第三方应用程序的 ...

最新文章

  1. Linux下清空用户登录记录和命令历史的方法
  2. 【python】数据结构与算法之选择排序
  3. 项目代码从GitHub上克隆到本地
  4. zTree树形菜单使用实例
  5. 六十二、Springboot中的配置文件和全注解
  6. im2rec.py代码解读
  7. centos移动文件到指定目录_Dynamo批量分离中心文件并另存到指定目录
  8. 给定条件找最小值c语言程序_根据给定条件最小化n的最小步骤
  9. [YOLO] libtorch-yolov3 代码下载
  10. Django实战1-权限管理功能实现-10:用户管理
  11. 【meitong】Windows系统受损切莫将就使用 如何快速修复
  12. Windows/Linux 下启动Kafka,外带安装包
  13. Pycharm最舒服的主题风格
  14. 服务器如何选择固态硬盘,服务器固态硬盘如何挑选?
  15. [乱搞 暴力] BZOJ 1142 [POI2009]Tab
  16. 谷歌浏览器(chrome)版本与驱动对照表
  17. 山东科技大计算机与软件工程,山东科技大学(专业学位)软件工程考研难吗
  18. python 应用程序无法正常启动 000007b_“应用程序无法正常启动(oxc000007b)”解决方案...
  19. 获取指定区域内的坐标点位,在线查看经纬坐标
  20. 赛格曹晓冬分享实录:线下仍是智能硬件产品的主要消费渠道

热门文章

  1. 二十四、死锁的处理策略---检测和解除
  2. 二值人脸对齐--Binarized Convolutional Landmark Localizers for Human Pose Estimation and Face Alignment
  3. 可变形卷积网络--Deformable Convolutional Networks
  4. Ubuntu18.04安装keras(tensorflow)从无到有实录
  5. 报错解决:ERROR: While executing gem ... (Gem::CommandLineError)
  6. python精度丢失_JS大坑之19位数的Number型精度丢失问题详解_稚终_前端开发者
  7. 查看回调几个选项含义_C 盘总是莫名变大?更改这个文件位置至少腾出几个 G !...
  8. 下列哪项不属于以太网交换机的特点_网络测试作业题
  9. 【java 性能优化实战】3 工具实践:如何获取代码性能数据?
  10. oracle里minis用法,Oracle初学者必知的39个问题