iOS 和Android中的正则表达式简单使用

ios 中需要使用NSRegularExpression类,NSTextCheckingResult类。

下面给出最基本的实现代码

 NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(a.*)(b)" options:NSRegularExpressionCaseInsensitive error:nil];
    
    
    __block NSUInteger count = 0;
    NSString *string = @" ab  ab   ab ";
    [regex enumerateMatchesInString:string options:0 range:NSMakeRange(0, [string                                                                           length]) usingBlock:^(NSTextCheckingResult *match, NSMatchingFlags flags, BOOL *stop){
        NSLog(@"---------------------------find one match!");
        
        NSRange matchRange = [match range];
        NSRange firstHalfRange = [match rangeAtIndex:1];
        NSRange secondHalfRange = [match rangeAtIndex:2];
        
        NSLog(@"the string is %@",[string substringWithRange:matchRange]);
        NSLog(@"firstHalfRange is %@",[string substringWithRange:firstHalfRange]);
        NSLog(@"secondHalfRange is %@",[string substringWithRange:secondHalfRange]);
        
        
        
        if (++count >= 100) *stop = YES;
    }];

它的结果如下

这里每个rang的含义如下,matchRange表示找到的每个匹配串的总体位置,firstHalfRange则表示第一个表达式(a.*)的匹配范围,当然这个范围是总范围的一部分。

如果仅仅想处理第一个匹配的结果,那么可以使用以下的代码

NSTextCheckingResult *match = [regex firstMatchInString:string
                                                options:0
                                                  range:NSMakeRange(0, [string
length])];
if (match) {
    NSRange matchRange = [match range];
    NSRange firstHalfRange = [match rangeAtIndex:1];
    NSRange secondHalfRange = [match rangeAtIndex:2];
} }

 

Android中需要使用Pattern 和Matcher2个类,其实和ios的基本思路是一致的!

 String patternStr = "[0-9:]*";

 Pattern p = Pattern.compile(patternStr);

 Matcher m = p.matcher(originalStr);

 if (m.find()) {
         returnStr = m.group(0);
 }

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。