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 ...
随机推荐
- JavaScript push()和splice()方法
JavaScript push() 方法 定义和用法 push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度. 语法 arrayObject.push(newelement1,newele ...
- sass初步认识1
sass是一种“css预处理器”,同类的还有less等,方法类似.css预处理器的基本思想是,用一种专门的编程语言,进行网页样式设计,然后再编译成正常的css文件. 使用sass需要先暗转RUBY,再 ...
- python:配置文件configparser
#-*- coding:utf8 -*- # Auth:fulimei import configparser #第一个标签 conf=configparser.ConfigParser() conf ...
- Squares 分类: POJ 2015-08-04 11:46 3人阅读 评论(0) 收藏
Squares Time Limit: 3500MS Memory Limit: 65536K Total Submissions: 17462 Accepted: 6634 Description ...
- c#中委托和事件(续)(转)
本文将讨论委托和事件一些更为细节的问题,包括一些大家常问到的问题,以及事件访问器.异常处理.超时处理和异步方法调用等内容. 为什么要使用事件而不是委托变量? 在 C#中的委托和事件 中,我提出了两个为 ...
- Poj(2407),Greater New York Regional 2015 (D)
题目链接:http://poj.org/problem?id=2407 Relatives Time Limit: 1000MS Memory Limit: 65536K Total Submis ...
- 华东交通大学2016年ACM“双基”程序设计竞赛 1002
Problem Description 今天小学弟又训练完了,但是小学弟又不想看球赛,于是小学弟看马赛了.他发现马鞍是一个奇怪的东西.于是小学弟根据马鞍定义了一种马鞍数:在一个二位矩阵中,马鞍数在当前 ...
- COGS502. 长路上的灯
502. 长路上的灯 ☆ 输入文件:light.in 输出文件:light.out 简单对比时间限制:1 s 内存限制:128 MB [题目描述] 在一条无限长的路上,有一排无限长的路 ...
- MUI 框架微信支付
在MUI 框架中实现了支付宝支付后,以为MUI微信支付,也没什么大问题,结果这个问题困扰了我几天,后面再同事的提醒下终于弄出来了, 问题出在,开始使用Dcloud 公有证书 怎么也付不了....,后面 ...
- 【Java】斐波那契数列(Fibonacci Sequence、兔子数列)的3种计算方法(递归实现、递归值缓存实现、循环实现、尾递归实现)
斐波那契数列:0.1.1.2.3.5.8.13………… 他的规律是,第一项是0,第二项是1,第三项开始(含第三项)等于前两项之和. > 递归实现 看到这个规则,第一个想起当然是递归算法去实现了, ...