2011-08-21 52 views
0

我必須解析大的HTML文本文件並提取符合特定模式的子字符串。例如:如何提取匹配模式的子字符串?

<span id='report-9429'>Report for May 2009</span> 
A lot of code and text. 
<span id='report-10522'>Report for Apr 2009</span> 
A lot of code and text. 
<span id='report-15212'>Report for Apr 2009</span> 

其中9429,10522和15212是我必須得到的部分子串。該文件包含許多這些,我需要得到所有這些。

Cocoa中是否有某種RegExp功能?那麼這樣的RegExp會是怎樣的呢?

回答

3

您可以使用NSRegularExpression(儘管顯然它不適用於Snow Leo)或RegexKit

你的正則表達式可能是這樣的:

<span id='report-(\d+)'>Report for \w+ \d+</span> 

對於NSRegularExpression,代碼可能是這樣的:

NSString *pattern = @"<span id='report-(\d+)'>Report for \w+ \d+</span>"; 
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern 
                     options:0 
                     error:nil]; 
[regex enumerateMatchesInString:string 
         options:0 
          range:NSMakeRange(0, [string length]) 
        usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) { 
    NSString *reportId = [string substringWithRange:[result rangeAtIndex:1]]; 
    // Do something with reportId 
}];