我必须解析大型 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 功能?这样的正则表达式会是什么样子?
最佳答案
您可以使用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
}];
关于cocoa - 如何提取与模式匹配的子字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7137572/