ios从4.0开始支持正则表达式。具体涉及到的类是:
NSRegularExpression
NSTextCheckingResult
有了这个内置的ios正则表达式函数,可以不用RegexKitLite了。现在比较强的正则库是PCRE的,mac上PCRE的实现见:
http://regexkit.sourceforge.net/
两个例子说明一下NSRegularExpression的用法:
-(void)parseString{
//组装一个字符串,需要把里面的网址解析出来
NSString *urlString=@"sfdsfhttp://www.baidu.com";
//NSRegularExpression类里面调用表达的方法需要传递一个NSError的参数。下面定义一个
NSError *error;
//http+:[^\\s]* 这个表达式是检测一个网址的。
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"http+:[^\\s]*" options:0 error:&error];
if (regex != nil) {
NSTextCheckingResult *firstMatch=[regex firstMatchInString:urlString options:0 range:NSMakeRange(0, [urlString length])];
if (firstMatch) {
NSRange resultRange = [firstMatch rangeAtIndex:0];
//从urlString当中截取数据
NSString *result=[urlString substringWithRange:resultRange];
//输出结果
NSLog(@"%@",result);
}
}
}
NSRegularExpression功能还是比较强大的,支持正则嵌套分组,下面是例子:
NSString * tmp = [NSString stringWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"dreamcafe.rtf" ofType:nil]
encoding:NSUTF8StringEncoding
error:nil];
// NSRange r;
NSString *regExStr = @"hbhWxTime[\"\']><.*?>(.+?)<";
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regExStr
options:NSRegularExpressionCaseInsensitive
error:&error];
__block NSMutableArray * timeTimes = [NSMutableArray array];
[regex enumerateMatchesInString:tmp options:0 range:NSMakeRange(0, [tmp length]) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {
NSLog(@"timeTimes = %@",[tmp substringWithRange:[result rangeAtIndex:1]]);
[timeTimes addObject:[tmp substringWithRange:[result rangeAtIndex:1]]];
}];
/*注释:
[result rangeAtIndex:0] yuresult.range 等价
*/
说明:
匹配结果:
NSTextCheckingResult
!!!用range来标示匹配到的每一个子表达式/分组的。既通过substringWithRange:才能获取到某个子表达式匹配到的字符串
range
resultType
numberOfRanges 匹配到的分组/子表达式个数
– rangeAtIndex: 获取第几个子表达式
分享到:
相关推荐
ios正则表达式资源文件
iOS正则表达式工具
本文详细讲解了iOS 正则表达式的详细用法,并对参数给出了详细的说明
对于IOS正则表达式给出的第三方,只需要在工程里面添加就行
iOS正则表达式类库,供有需要的人下载使用。
主要介绍了IOS正则表达式之验证密码身份证手机号的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
在IOS应用中,经常要输入数据,然输入数据,就要校验数据的合法性,这是我们很自然的联想到web应用中的正则表达式。然而Cocoa并未支持正则表达式。这是我们可以使用第三方工具(RegexKitLite)来实现正则表达式。
本篇文章主要介绍了iOS中常见正则表达式验证方法,主要包括有身份证、手机号、军官证,有兴趣的可以了解一下。
主要介绍了iOS 正则表达式判断纯数字及匹配11位手机号码的方法,判断手机号码是否正确的方法很多,我是用正则表达式来完成匹配的,具体方法,大家参考下本
主要介绍了IOS中用正则表达式判断输入的内容为8-16位且同时包含数字和字母,需要的朋友可以参考下
本文主要介绍了iOS 正则表达式判断手机号码、固话,以及匹配是否是移动/联通/电信手机号的方法。具有很好的参考价值,下面跟着小编一起来看下吧
RegexKitLite ios正则表达式
PySwiftyRegex 是 Swift 的像 Python 的 re 模块一样简洁高效的正则表达式封装,面向 iOS/OSX,支持 Cocoapods。 示例代码: import PySwiftyRegexif let m = re.search("[Tt]his is (.*?)easy", "I ...
主要介绍了iOS正则表达式验证手机号、邮箱、身份证号等信息,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
NSPredicate应用,包括以下几个部分: 1、字符串,正则表达式的匹配; 2、字符串数组NSArray和NSMutableArray的快捷过滤方式; 3、自定义对象数组NSArray和NSMutableArray的快捷过滤方式;
正则表达式在ios中应用 一、什么是正则表达式 正则表达式,又称正规表示法,是对字符串操作的一种逻辑公式。正则表达式可以检测给定的字符串是否符合我们定义的逻辑,也可以从字符串中获取我们想要的特定部分。它...
在开发过程中,有时需要对用户输入的类型做判断,最常见是在注册页面即用户名和密码。接下来通过本文给大家分享IOS正则表达式判断输入类型,一起学习吧