Как извлечь подстроку, которая соответствует шаблону? - PullRequest
0 голосов
/ 21 августа 2011

Я должен проанализировать большие текстовые файлы 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 - это части, которые я должен получить как массив подстрок. Файл содержит многие из них, и мне нужно получить их все.

Есть ли какая-то особенность RegExp в Какао? И как бы выглядел такой RegExp?

1 Ответ

3 голосов
/ 21 августа 2011

Вы можете использовать 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
}];
...