iOS正则表达式的简单运用

正则表达式(Regular Expression)

相信大家对于正则表达式都已经略有耳闻,通过配置相应的程序编译语言来取出我们想要的字符串,或简单用于一些文字格式的匹配,比如最常用的email格式,手机号格式,我们都可以用正则表达式这一强大文字检索工具实现。今天简单小结一下iOS上正则表达式的运用。
在OC中主要使用NSRegularExpression进行复杂的文本匹配及替换
我们先看一下NSRegularExpression这个类里面存在的方法

// *************** 匹配方法 ***************

//迭代每次计算过程
- (void)enumerateMatchesInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange)range usingBlock:(void (^)(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop))block;

//返回匹配数据
- (NSArray *)matchesInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange)range;

//匹配总数
- (NSUInteger)numberOfMatchesInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange)range;

//匹配第一个,不过返回的是 NSTextCheckingResult 类似
//NSTextCheckingResult类: 能检测到匹配类型, 如URL/手机号等
- (NSTextCheckingResult *)firstMatchInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange)range;

//匹配第一个
- (NSRange)rangeOfFirstMatchInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange)range;



// *************** 替换方法 ***************

// 返回替换后的新字符串, 源字符串不变
- (NSString *)stringByReplacingMatchesInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange)range withTemplate:(NSString *)templ;

// 直接在源字符串里替换
- (NSUInteger)replaceMatchesInString:(NSMutableString *)string options:(NSMatchingOptions)options range:(NSRange)range withTemplate:(NSString *)templ;

// 在 string 中查找由 result + offset 指定的字符串, 返回 template 指定的字符串(比如$0-9等);
- (NSString *)replacementStringForResult:(NSTextCheckingResult *)result inString:(NSString *)string offset:(NSInteger)offset template:(NSString *)templ;



// *************** 其它 ***************

// 正则表达式字符串, 包括一些特殊字符.
+ (NSString *)escapedTemplateForString:(NSString *)string;

//options参数:
typedef NS_OPTIONS(NSUInteger, NSMatchingOptions) {
   NSMatchingReportProgress         = 1 << 0, //找到最长的匹配字符串后调用block回调
   NSMatchingReportCompletion       = 1 << 1, //找到任何一个匹配串后都回调一次block
   NSMatchingAnchored               = 1 << 2, //从匹配范围的开始处进行匹配
   NSMatchingWithTransparentBounds  = 1 << 3, //允许匹配的范围超出设置的范围
   NSMatchingWithoutAnchoringBounds = 1 << 4  //禁止^和$自动匹配行还是和结束
};

//enumerateMatchesInString 的 block 回调中的 flags 枚举对应如下:
typedef NS_OPTIONS(NSUInteger, NSMatchingFlags) {
   NSMatchingProgress               = 1 << 0, //匹配到最长串是被设置     
   NSMatchingCompleted              = 1 << 1, //全部分配完成后被设置    
   NSMatchingHitEnd                 = 1 << 2, //匹配到设置范围的末尾时被设置   
   NSMatchingRequiredEnd            = 1 << 3, //当前匹配到的字符串在匹配范围的末尾时被设置     
   NSMatchingInternalError          = 1 << 4  //由于错误导致的匹配失败时被设置   
};

你可能感兴趣的:(iOS正则表达式的简单运用)