OC正则表达式的简单使用
最近落实工作的事情后终于有时间可以写博客了
今天带来的是正则表达式的一般使用方法
我们平时在对字符串构成就行判断的时候,一般利用其单个字符进行条件判断
但如果判断的条件稍微复杂一点,那对单个字符判断就变得相当麻烦,因此这里就引入了正则表达式的概念
个人将正则表达式理解是:把多个字符串的集合为一个表达式写出
OC中一般正则表达式的使用方法为2步
1.创建一个正则表达式对象
2.利用正则表达式来测试对应的字符串
例如
NSString *checkString = @"a34sd231";
//1.创建正则表达式,[0-9]:表示‘0’到‘9’的字符的集合
NSString *pattern = @"[0-9]";
//1.1将正则表达式设置为OC规则
NSRegularExpression *regular = [[NSRegularExpression alloc] initWithPattern:pattern options:NSRegularExpressionCaseInsensitive error:nil];
//2.利用规则测试字符串获取匹配结果
NSArray *results = [regular matchesInString:checkString options: range:NSMakeRange(, checkString.length)];
NSLog(@"%ld",results.count);
获取打印结果,从checkString上分析为数字的字符有5
所以可以得出一个结论,正则表达式的作用就是把多可字符串杂糅到一个表达式中
到这里就能大概明白正则表达式的意义了,接下来介绍一部分常用的正则表达式字符
/*
[]:找到内部的某一个字符
[a-zA-Z0-9] ===> 代表字符或数字
\\d ====>代表数字
{2}:代表有2个
{2,4}:代表有2到4个
// ? + * ^ $ .
?: 代表0或1个
+: 代表至少1个
*: 代表0个或多个
^: 代表以...开头
$: 代表以...结束
.: 代表除换行符以外的任意字符
*/
//代表一个数字字符
NSString *pattern = @"\\d";
//代表2到5个连续的数字
NSString *pattern = @"\\d{2,5}";
//qq账号的正则表达式
NSString *pattern = @"^[1-9]\\d{4,10}";
//电话号码格式的正则表达式
NSString *pattern = @"^((13[0-9])|(15[3-5])|(18[07-9]))\\d{8}$"
//邮箱的正则表达式
NSString *pattern =@"^.*@..+\\.[a-zA-Z]{2,4}$"
这样根据需要的匹配规则来设定正则表达式就可以判断字符串是否为符合类型
若有一个长串字符串就要对其中部分进行表情、url、@(呼叫)或#话题# 的匹配判断
则需要多个正则表达式来进行判断
//需要被筛选的字符串
NSString *str = @"#今日要闻#[偷笑] http://asd.fdfs.2ee/aas/1e @sdf[test] #你确定#@rain李23: @张三[挖鼻屎]m123m";
//表情正则表达式
// \\u4e00-\\u9fa5 代表unicode字符
NSString *emopattern = @"\\[[a-zA-Z\\u4e00-\\u9fa5]+\\]";
//@正则表达式
NSString *atpattern = @"@[0-9a-zA-Z\\u4e00-\\u9fa5]+";
//#...#正则表达式
NSString *toppattern = @"#[0-9a-zA-Z\\u4e00-\\u9fa5]+#";
//url正则表达式
NSString *urlpattern = @"\\b(([\\w-]+://?|www[.])[^\\s()<>]+(?:\\([\\w\\d]+\\)|([^[:punct:]\\s]|/)))";
//设定总的正则表达式
NSString *pattern = [NSString stringWithFormat:@"%@|%@|%@|%@",emopattern,atpattern,toppattern,urlpattern];
//根据正则表达式设定OC规则
NSRegularExpression *regular = [[NSRegularExpression alloc] initWithPattern:pattern options:NSRegularExpressionCaseInsensitive error:nil];
//获取匹配结果
NSArray *results = [regular matchesInString:str options: range:NSMakeRange(, str.length)];
//NSLog(@"%@",results);
//遍历结果
for (NSTextCheckingResult *result in results) {
NSLog(@"%@ %@",NSStringFromRange(result.range),[str substringWithRange:result.range]);
}
获得结果
有了上面的演示就可以大致写出系统方法使用的正则表达式了
OC正则表达式的简单使用的更多相关文章
- Objective-C学习笔记(四)——OC实现最简单的数学运算
本篇帖子会实现使用OC的最简单的加减乘除运算.学习的知识点包含变量定义.运算方法,格式化输出等概念.主要学习主要的语法,事实上和C语言的语法还是比較相似的. 具体代码仅仅要写在main方法中即可了.具 ...
- Python正则表达式的简单应用和示例演示
前一阵子小编给大家连续分享了十篇关于Python正则表达式基础的文章,感兴趣的小伙伴可以点击链接进去查看.今天小编给大家分享的是Python正则表达式的简单应用和示例演示,将前面学习的Python正则 ...
- PHP 正则表达式的简单应用以 preg_match_all 抓取HTML元素为例 [转载]
PHP 正则表达式的简单应用以 preg_match_all 抓取HTML元素为例 2011-12-02 17:09:39| 分类: PHP|举报|字号 订阅 下载LOFTER我的照片书 ...
- ABAP中正则表达式的简单使用方法 (转老白BLOG)
在一个论坛上面看到有人在问正则表达式的问题,特举例简单说明一下.另外,REPLACE也支持REGEX关键字.最后:只能是ECC6或者更高版本才可以(ABAP supports POSIX regula ...
- OC正则表达式的使用
OC中一般正则表达式的使用方法为2步 1.创建一个正则表达式对象 2.利用正则表达式来测试对应的字符串 例如 NSString *checkString = @"a34sd231" ...
- C#正则表达式_简单梳理_Emoji表情字符处理
A-最近一直有接触到正则表达式,现对其做简单梳理: private const RegexOptions OPTIONS = RegexOptions.IgnoreCase | RegexOption ...
- python根据正则表达式的简单爬虫
今天根据正则表达式简单的爬了一下大众点评,把北京的美食爬了爬,(店铺名,人均消费,地址) import re import urllib.request from urllib.request imp ...
- 在C#中使用正则表达式最简单的方式
更新记录 本文迁移自Panda666原博客,原发布时间:2021年5月11日. 在.NET中使用正则表达式与其他语言并无太大差异.最简单的使用就是使用Regex类型自带的静态方法. 注意:在.NET中 ...
- 通过正则表达式实现简单xml文件解析
这是我通过正则表达式实现的xml文件解析工具,有些XHTML文件中包含特殊符号,暂时还无法正常使用. 设计思路:常见的xml文件都是单根树结构,工具的目的是通过递归的方式将整个文档树装载进一个Node ...
随机推荐
- NSDictionary to jsonString || 对象转json格式
-(NSString*)DataTOjsonString:(id)object { NSString *jsonString = nil; NSError *error; NSData *jsonDa ...
- thinkPHP3.2.3完整版 在sae上面的部署
第一步: thinkPHP3.2.3完整版,目录结构如下 第二步:在新浪sae上面创建一个新应用 第三步:用svn down,下来会有两个文件:index.php.config.ya ...
- WPF:获取控件内的子项
一.界面内容(部分:仅供参考) <Window> <Window.Resources> <!--工具数据源--> <XmlDataProvider x:Key ...
- yjfk 意见反馈
<div> <h1>我的第一个 JavaScript 程序</h1><p id="demo">这是一个段落</p>< ...
- hihoCoder 数论五·欧拉函数
题目1 : 数论五·欧拉函数 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho有时候会用密码写信来互相联系,他们用了一个很大的数当做密钥.小Hi和小Ho约定 ...
- JDBC的批量处理数据
主要用到的方法有: preparedStatement.executeBatch();//积攒的数据执行 preparedStatement.clearBatch();//积攒的清除掉 prepare ...
- Webstrom快捷键大全
20:32:59 Ctrl+/ 或 Ctrl+Shift+/ 注释(// 或者 ) Shift+F6 重构-重命名 Ctrl+X ...
- hiho 第116周,最大流最小割定理,求最小割集S,T
小Hi:在上一周的Hiho一下中我们初步讲解了网络流的概念以及常规解法,小Ho你还记得内容么? 小Ho:我记得!网络流就是给定了一张图G=(V,E),以及源点s和汇点t.每一条边e(u,v)具有容量c ...
- linux poll 学习
一.poll介绍 函数原型: #include <poll.h> int poll(struct pollfd *fds, nfds_t nfds, int timeout); struc ...
- 2016年6月29日 星期三 --出埃及记 Exodus 14:26
2016年6月29日 星期三 --出埃及记 Exodus 14:26 Then the LORD said to Moses, "Stretch out your hand over the ...