// 其中^[0-9]+$表示字符串中只能包含>=1个0-9的数字。
NSString* numberRE=@"[A-Z]";
NSString *textString = @"aBDc876";
//1.谓词和正则表达式配合使用,这相当于re的MATCHES模式全匹配
NSPredicate *numberPre = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",numberRE];
BOOL r1 = [numberPre evaluateWithObject:textString];
NSLog(@"r1:%i",r1);
//2.字符串查找,注意NSRegularExpressionSearch这里是正则search模式
NSRange range = [textString rangeOfString:numberRE options:NSRegularExpressionSearch];
if (range.location != NSNotFound) {
NSLog(@"r2:%@", [textString substringWithRange:range]);
}
/**
NSRegularExpressioncasesincensitive=1<<0,/*匹配不区分大小写的模式中的字母*/
NSRegularExpressionalowcommentsandwitespace=1<<1,/*忽略模式中的空格和#-前缀注释*/
NSRegularExpressionIgnoreMetacharacters=1<<2,/*将整个模式视为文本字符串*/
NSRegularExpressionDotMatchesLineSeparators=1<<3,/*允许。匹配任何字符,包括行分隔符*/
NSRegularExpressionAnchorsMatchLines=1<<4,/*允许^和$匹配行首和行尾*/
NSRegularExpressionUseUnixLineSeparators=1<<5,/*仅将\n视为行分隔符(否则,将使用所有标准行分隔符)*/
NSRegularExpressionuseunicodewordbordings=1<<6/*使用Unicode TR#29指定单词边界(否则,将使用传统的正则表达式单词边界)*/
*/
//3.正则表达式类(NSRegularExpression),根据不同的枚举NSRegularExpressionDotMatchesLineSeparators选择不同的正则匹配模式
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:numberRE options:NSRegularExpressionDotMatchesLineSeparators error:&error];
//3.1找到第一个
NSTextCheckingResult *result1 = [regex firstMatchInString:textString options:0 range:NSMakeRange(0, [textString length])];
if (result1) {
NSLog(@"r3_1:%@ %@",result1,[textString substringWithRange:result1.range]);
}
//3.2找出全部结果
NSArray *resultArr = [regex matchesInString:textString options:(0) range:NSMakeRange(0, [textString length])];
if (resultArr.count > 0) {
for (NSTextCheckingResult *result in resultArr) {
NSLog(@"r3_2:%@ %@",result,[textString substringWithRange:result.range]);
}
}
网友评论