Objective-C 正则表达式使用(1)
学习了一下OC的正则表达式备忘一下
使用正则表达式的步骤:
- 创建一个一个正则表达式对象:定义规则。
- 利用正则表达式对象测试,相应的字符串。
NSString *userName = @"12132321";
NSString *pattern = @"\\d"匹配数字
NSString *pattern = @"[a-zA-Z]";
NSString *pattern = @"[[0-9][0-9]]"; 匹配两个数字
NSString *pattern = @"\\d\\d"; 匹配两个数字
NSString *pattern = @"\\d{2, 4}"; 匹配连续的数字2个到4个能得到匹配
- ? 代表0个或者多个
- + 至少有一个
- * 个或多个
- ^ 以..开头
- $ 以..结尾
- 看一个实例
NSString *userName = @""; //要匹配的字符串
NSString *pattern = @"\\d"; //匹配规则
NSRegularExpression *regex = [[NSRegularExpression alloc] initwithPattern:pattern optons: error:nil]; //测试字符串
NSArray *results = [regex matchesInString:userName options: range:NSMakeRange(, userName.length)];];
NSLog(@"%zd", results.count);
results 存储的匹配的所有结果,运行上述程序,输出9 明显得到9个匹配
RegexKitLite的基本使用方法
OC自带的正则表达式明显显得过于繁琐,使用RegexKitLite可以很方便得处理匹配结果而且提供一些其他更强大的功能
实例
NSString *str = @"#呵呵呵#[偷笑] http://foo.com/blah_blah #解放军#//http://foo.com/blah_blah @Ring花椰菜:就#范德萨发生的#舍不得打[test] 就惯#急急急#着他吧[挖鼻屎]//@崔西狮:小拳头举起又放下了 说点啥好呢…… //@toto97:@崔西狮 蹦米咋不揍他#哈哈哈# http://foo.com/blah_blah"; NSString *emotionPattern = @"\\[[0-9a-zA-Z\\u4e00-\\u9fa5]+\\]" 匹配表情比如 [哈哈]
\\匹配URl
NSString *urlPattern = @"\\b(([\\w-]+://?|www[.])[^\\s()<>]+(?:\\([\\w\\d]+\\)|([^[:punct:]\\s]|/)))";
\\多个条件可以使用或运算|| 联合匹配
NSString *pattern = [NSString stringWithFormat:@"%@|%@|%@|%@", emotionPattern, urlPattern];
\\使用RegexKitLite方法
\\遍历所有匹配结果
[str enumerateStringsMatchedByRegex:pattern usingBlock:^(NSInteger captureCount, NSString *const __unsafe_unretained *capturedStrings, const NSRange *capturedRanges, volatile BOOL *const stop) {
NSLog(@"%@ %@", *capturedStrings, NSStringFromRange(*capturedRanges));
}];
\\以正则表达式为分隔符
[str enumerateStringsSeparatedByRegex:pattern usingBlock:^(NSInteger captureCount, NSString *const __unsafe_unretained *capturedStrings, const NSRange *capturedRanges, volatile BOOL *const stop) {
NSLog(@"%@ %@", *capturedStrings, NSStringFromRange(*capturedRanges));
}];
Objective-C 正则表达式使用(1)的更多相关文章
- Automake
Automake是用来根据Makefile.am生成Makefile.in的工具 标准Makefile目标 'make all' Build programs, libraries, document ...
- JS正则表达式常用总结
正则表达式的创建 JS正则表达式的创建有两种方式: new RegExp() 和 直接字面量. //使用RegExp对象创建 var regObj = new RegExp("(^\\s+) ...
- Python高手之路【五】python基础之正则表达式
下图列出了Python支持的正则表达式元字符和语法: 字符点:匹配任意一个字符 import re st = 'python' result = re.findall('p.t',st) print( ...
- C# 正则表达式大全
文章导读 正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串.正则表达式无疑是处理文本最有力的工具,而.NET提供的Regex类实现了验证正则表达式的方法.Regex 类表示不可变(只读)的 ...
- C#基础篇 - 正则表达式入门
1.基本概念 正则表达式(Regular Expression)就是用事先定义好的一些特定字符(元字符)或普通字符.及这些字符的组合,组成一个“规则字符串”,这个“规则字符串”用来判断我们给定的字符串 ...
- JavaScript正则表达式,你真的知道?
一.前言 粗浅的编写正则表达式,是造成性能瓶颈的主要原因.如下: var reg1 = /(A+A+)+B/; var reg2 = /AA+B/; 上述两个正则表达式,匹配效果是一样的,但是,效率就 ...
- Python 正则表达式入门(中级篇)
Python 正则表达式入门(中级篇) 初级篇链接:http://www.cnblogs.com/chuxiuhong/p/5885073.html 上一篇我们说在这一篇里,我们会介绍子表达式,向前向 ...
- 【JS基础】正则表达式
正则表达式的() [] {}有不同的意思. () 是为了提取匹配的字符串.表达式中有几个()就有几个相应的匹配字符串. (\s*)表示连续空格的字符串. []是定义匹配的字符范围.比如 [a-zA-Z ...
- JavaScript 正则表达式语法
定义 JavaScript定义正则表达式有两种方法. 1.RegExp构造函数 var pattern = new RegExp("[bc]at","i"); ...
- [jquery]jquery正则表达式验证(手机号、身份证号、中文名称)
数字判断方法:isNaN()函数 test()方法 判断字符串中是否匹配到正则表达式内容,返回的是boolean值 ( true / false ) // 验证中文名称 function isChin ...
随机推荐
- UVA10305:Ordering Tasks(拓扑排序)
John has n tasks to do. Unfortunately, the tasks are not independent and the execution of one task i ...
- js操作表格
js 操作table: insertRow(),deleteRow(),insertCell(),deleteCell()方法 表格有几行: var trCnt = table.rows.length ...
- 用ssh-key-gen 在本地主机上创建公钥和密钥
用ssh-key-gen 在本地主机上创建公钥和密钥 ligh@local-host$ ssh-keygen -t rsa
- webstock学习
1.WebSocket是HTML5中出出现的新技术,有着web TCP之称,这也是为了适应现在实时传输数据的趋势,在这之前一般采用两种方法进行实时数据交换. 轮询机制,其中又包括长轮询. ①短轮询是指 ...
- Sass基本特性
Sass扩展/继承@extend 代码的继承,声明方式:.class;调用方式:@extend 如: .btn { border: 1px solid #ccc; padding: 6px 10px; ...
- “chm 已取消到该网页的导航”解决方案
1. 右键单击该 CHM 文件,然后单击“属性”. 2. 单击“取消阻止”或者“解除锁定”. 3. 双击此 .chm 文件以打开此文件.
- C++和ASM文件的互相调用
1. C++调用ASM中的函数,需要在ASM源文件中指定.model flat, c 就是指定以C的形式编译,然后在头文件中用EXTERN_C声明这个头文件就可以了 2. ASM中调用C++函数,需要 ...
- 图像处理框架 Core Image 介绍
这篇文章会为初学者介绍一下 Core Image,一个 OS X 和 iOS 的图像处理框架. 如果你想跟着本文中的代码学习,你可以在 GitHub 上下载示例工程.示例工程是一个 iOS 应用程序, ...
- iOS面试题 第一天
今天上午,下午分别面试了两家公司.上午是一家互联网公司,气氛还比较好,是我比较喜欢的.技术这块是直接机试,主要是给了些BUG让我修复,整个过程还算顺利.下午去了一家大型的证券公司.整理技术问题如下: ...
- android stuido ndk 开发
开发环境: Android studio 1.0.2 ndk android-ndk-r10d-windows-x86_64 ------------------------------------ ...