ios中正则表达式的使用

xianfengmc 2013-08-27

在ios中主要使用的是NSRegularExpression类、NSTextCheckingResult,

具体代码如下:

NSError *error = NULL;
    NSString *patternIFrame;
    NSRegularExpression *regex;
    int offset = 0;    
    //parse <iframe>
    patternIFrame = @"\<iframe.*?\<\/iframe\>";
    // 配置regex对象
    regex = [NSRegularExpression regularExpressionWithPattern:patternIFrame options:NSRegularExpressionCaseInsensitive error:&error];
    // 这里是用来从字符串中查询符合规则的字符串,然后返回结果
    NSArray *matchResult = [regex matchesInString:text options:NSMatchingReportCompletion range:NSMakeRange(0, text.length)];
    for(NSTextCheckingResult *result in matchResult){
        @autoreleasepool {
            //            NSLLog(@"%@", result);
            if(result.range.location-offset > 0){
                NSString *str = [text substringWithRange:NSMakeRange(offset, result.range.location-offset)];
                NSLog("%@", str);
            }
            offset = result.range.location + result.range.length;
        }
    }

使用正则表达式可以很方便的操作一个字符串,根据一定的规则可以用来查找、替换。

在使用过程中,写pattern是最困难的一部分,ios中的pattern跟其他的规则又不一样的地方,具体规则参考:https://developer.apple.com/library/ios/documentation/Foundation/Reference/NSRegularExpression_Class/Reference/Reference.html

常用例子:

   // 用来判断是否是来自主站的图片 

    NSString *imgPattern = @"^http://img1\.guokr\.com/thumbnail/[\\w-]{56}_(\\d*)x(\\d*)?\.(jpg|gif|png)";

 

   // 截取iframe标签

    patternIFrame = @"\<iframe.*?\<\/iframe\>";

   // 从img标签中截取图片地址 

   patternIFrame = @"src\=(.*?\.\")" 

  

 

相关推荐