我必须解析大的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会是什么样的?
答案 0 :(得分:3)
您可以使用NSRegularExpression(虽然显然它不适用于雪狮)或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
}];