正则表达式简单语法使用总结二
2015-08-11 22:24
309 查看
正则表达式在IOS开发中的应用
正则表达式在字符串查找,替换,检测中的应用非常广泛,正则表达式是什么,有怎样的语法,我的另一篇博客中有详细的介绍。这里只简单说一下其概念 ,正则表达式是一种语法小巧简单的语言,用来约束一些过滤字符串条的条件。很多开发工具都有支持正则表达式的内容,IOS也不例外,在IOS中NSRegularExpression类就是一个专门来处理正则表达式的类。一、初始化方法
初始化NSRegularExpression的方法有两种,一个init方法和一个类方法。其作用基本是一样的+ (NSRegularExpression *)regularExpressionWithPattern:(NSString *)pattern options:(NSRegularExpressionOptions)options error:(NSError **)error;
- (instancetype)initWithPattern:(NSString *)pattern options:(NSRegularExpressionOptions)options error:(NSError **)error
其中,pattern是正则表达式,options是参数。对于option参数,它是一个枚举,表示正则模式的设置,如下:
?
aBc 会匹配到abc.
2、NSRegularExpressionIgnoreMetacharacters模式下正则表达式a b c 会匹配到abc,正则表达式ab#c会匹配到ab。
3、NSRegularExpressionAllowCommentsAndWhitespace模式下正则表达式[a-z],会匹配到[a-z]。
二、获取查询结果
初始化完毕正则表达式的处理类后,我们需要进行正则表达式的查询,IOS官方提供了两种模式:1、带block模式的方法:
- (void)enumerateMatchesInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange)range usingBlock:(void (^)(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop))block;使用举例:
?
?
?
2、非block的方法
这个方法会返回一个结果数组,将所有匹配的结果返回- (NSArray *)matchesInString:(NSString
*)string options:(NSMatchingOptions)options range:(NSRange)range;
这个方法会返回匹配到得字符串的个数
- (NSUInteger)numberOfMatchesInString:(NSString
*)string options:(NSMatchingOptions)options range:(NSRange)range;
这个方法会返回第一个查询到得结果,这个NSTextCheckingResult对象中有一个range属性,可以得到匹配到的字符串的范围。
- (NSTextCheckingResult *)firstMatchInString:(NSString
*)string options:(NSMatchingOptions)options range:(NSRange)range;
这个方法直接返回匹配到得范围,NSRange。
- (NSRange)rangeOfFirstMatchInString:(NSString
*)string options:(NSMatchingOptions)options range:(NSRange)range;
三、一个辅助方法
在NSRegularExpression类中还提供了一个辅助方法:+ (NSString *)escapedPatternForString:(NSString
*)string;
它可以帮助我们将正则表达式加上"\"进行保护,将元字符转化成字面值。
到此,在IOS中正则表达式的基本用法就介绍完了,希望正则表达式的应用,能为你的项目节省更多时间。
疏漏之处 欢迎指正
学习使用 欢迎转载
相关文章推荐
- 写一个函数验证哥德巴赫猜想
- 2015-08-11 [今日头条]--数据抓取和处理工程师--2面
- leetcode -eleven:Container With Most Water
- 8月7日总结
- Linux(cent OS)下软件包管理-源码包安装/脚本安装包
- REST当中为什么要使用HTTP PUT
- Html5(6)画图
- java封装好处和原则
- hdoj 3342 Legal or Not【拓扑排序】
- 二分查找的两种实现方式(JAVA)
- Synergy
- 产品设计的“节奏感”该如何把握?
- Linux 时钟管理
- 【西祠日志】【19】【20】有人说,21天可以养一种习惯
- Linux_学习笔记_0
- POJ2352 stars 修改某个位置上的值,查找一段区间的和(向上修改,向下统计)
- [笔记][Java7并发编程实战手册]2.5使用Lock实现同步二
- 黑马程序员——Java基础---IO、File类、Properties类、打印流、序列流(合并流)
- Linux | chmod命令
- 【2】最简单的Laravel5.1程序分析