最近落实工作的事情后终于有时间可以写博客了

今天带来的是正则表达式的一般使用方法

我们平时在对字符串构成就行判断的时候,一般利用其单个字符进行条件判断

但如果判断的条件稍微复杂一点,那对单个字符判断就变得相当麻烦,因此这里就引入了正则表达式的概念

个人将正则表达式理解是:把多个字符串的集合为一个表达式写出

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正则表达式的简单使用的更多相关文章

  1. Objective-C学习笔记(四)——OC实现最简单的数学运算

    本篇帖子会实现使用OC的最简单的加减乘除运算.学习的知识点包含变量定义.运算方法,格式化输出等概念.主要学习主要的语法,事实上和C语言的语法还是比較相似的. 具体代码仅仅要写在main方法中即可了.具 ...

  2. Python正则表达式的简单应用和示例演示

    前一阵子小编给大家连续分享了十篇关于Python正则表达式基础的文章,感兴趣的小伙伴可以点击链接进去查看.今天小编给大家分享的是Python正则表达式的简单应用和示例演示,将前面学习的Python正则 ...

  3. PHP 正则表达式的简单应用以 preg_match_all 抓取HTML元素为例 [转载]

    PHP 正则表达式的简单应用以 preg_match_all 抓取HTML元素为例 2011-12-02 17:09:39|  分类: PHP|举报|字号 订阅     下载LOFTER我的照片书   ...

  4. ABAP中正则表达式的简单使用方法 (转老白BLOG)

    在一个论坛上面看到有人在问正则表达式的问题,特举例简单说明一下.另外,REPLACE也支持REGEX关键字.最后:只能是ECC6或者更高版本才可以(ABAP supports POSIX regula ...

  5. OC正则表达式的使用

    OC中一般正则表达式的使用方法为2步 1.创建一个正则表达式对象 2.利用正则表达式来测试对应的字符串 例如 NSString *checkString = @"a34sd231" ...

  6. C#正则表达式_简单梳理_Emoji表情字符处理

    A-最近一直有接触到正则表达式,现对其做简单梳理: private const RegexOptions OPTIONS = RegexOptions.IgnoreCase | RegexOption ...

  7. python根据正则表达式的简单爬虫

    今天根据正则表达式简单的爬了一下大众点评,把北京的美食爬了爬,(店铺名,人均消费,地址) import re import urllib.request from urllib.request imp ...

  8. 在C#中使用正则表达式最简单的方式

    更新记录 本文迁移自Panda666原博客,原发布时间:2021年5月11日. 在.NET中使用正则表达式与其他语言并无太大差异.最简单的使用就是使用Regex类型自带的静态方法. 注意:在.NET中 ...

  9. 通过正则表达式实现简单xml文件解析

    这是我通过正则表达式实现的xml文件解析工具,有些XHTML文件中包含特殊符号,暂时还无法正常使用. 设计思路:常见的xml文件都是单根树结构,工具的目的是通过递归的方式将整个文档树装载进一个Node ...

随机推荐

  1. 在Linux下搭建Git服务器的方法是什么样?

    第一步 安装git:可以通过命令的方式快速安装,不同的linux的安装方法可能不一样,我的是采用的yum方法.ubuntu可以用apt-get命令.sudo yum install git 第二步 添 ...

  2. 20145227 《Java程序设计》第7周学习总结

    20145227 <Java程序设计>第7周学习总结 教材学习内容总结 第十二章 Lambda 如果使用JDK8的话,可以使用Lambda特性去除重复的信息. 在只有Lambda表达式的情 ...

  3. hack是什么

    不同浏览器对css的解析是不同是,因此需要css hack来解决浏览器局部的兼容性问题.针对不同浏览器写不同的CSS代码的过程叫CSS  Hack. 常见的hack有三种形式,分别是CSS属性hack ...

  4. HASH表原理(装)

    HASH表原理 大家都知道,在所有的线性数据结构中,数组的定位速度最快,因为它可通过数组下标直接定位到相应的数组空间,就不需要一个个查找.而哈希表就是利用数组这个能够快速定位数据的结构解决以上的问题的 ...

  5. cmake安装的软件要怎么卸载

    找到make install之后产生的这个文件install_manifest.txt里面有安装的所有东西的路径,删除它们即可.参考命令:cat install_manifest.txt | sudo ...

  6. Spring资源访问

    资源访问 1.Resource Jdk提供的访问资源的类并不能很好地满足各种底层的资源访问需求, 比如缺少从类路径或者web容器的上下文中获取资源的操作类. 鉴于此, Spring设计了一个Resou ...

  7. 显示实时日期时间(html+js)

    <!DOCTYPE><html> <head> <title> New Document </title> <meta name=&q ...

  8. 2016年12月14日 星期三 --出埃及记 Exodus 21:9

    2016年12月14日 星期三 --出埃及记 Exodus 21:9 If he selects her for his son, he must grant her the rights of a ...

  9. 2016年11月30日 星期三 --出埃及记 Exodus 20:21

    2016年11月30日 星期三 --出埃及记 Exodus 20:21 The people remained at a distance, while Moses approached the th ...

  10. python学习笔记四 迭代器,生成器,装饰器(基础篇)

    迭代器 __iter__方法返回一个迭代器,它是具有__next__方法的对象.在调用__next__方法时,迭代器会返回它的下一个值,若__next__方法调用迭代器 没有值返回,就会引发一个Sto ...