您的位置:首页 > 其它

正则表达式简单语法使用总结二

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参数,它是一个枚举,表示正则模式的设置,如下:

?
注意:1、NSRegularExpressionCaseInsensitive模式下正则表达式
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;

使用举例:

?
注意:1、这个函数的一个参数options是一个枚举,设置回调的方式,如下:

?
2、block回调中的flags枚举对应如下:

?
3、还有一点需要注意,就是那个bool值stop,我们可以在block块中设置它为YES,之后便会停止查找。

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中正则表达式的基本用法就介绍完了,希望正则表达式的应用,能为你的项目节省更多时间。

疏漏之处 欢迎指正

学习使用 欢迎转载
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: