2
Простой вопрос с регулярным выражением. У меня есть строка на следующем формате:Извлечь текст между двумя маркерами с регулярным выражением
[page]
Some text with multi line.
[page/]
[page]
Another text with multi line.
[page/]
[page]
Third text with multi line.
[page/]
Что такое регулярное выражение для извлечения текста между [page]
и [page/]
?
Я использую этот код, но у меня только первый матч.
NSString *path = [[NSBundle mainBundle] pathForResource:@"File" ofType:@"txt"];
NSString *mainText = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
NSError *error = NULL;
NSRange range = NSMakeRange(0, mainText.length);
NSString *pattern = [NSString stringWithFormat:@"(?<=\\[page])(?s)(.*?)(?=\\[page/])"];
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern options:NSRegularExpressionCaseInsensitive error:&error];
NSRange rangeOfFirstMatch = [regex rangeOfFirstMatchInString:mainText options:0 range:range];
if (!NSEqualRanges(rangeOfFirstMatch, NSMakeRange(NSNotFound, 0))) {
NSString *substringForFirstMatch = [mainText substringWithRange:rangeOfFirstMatch];
NSLog(@"sub: %@", substringForFirstMatch);
}
Как я могу, но текст каждого матча в NSArray?
Почему вы не используете 'matchesInString: параметры: диапазон:' который возвращает '' NSArray' из NSTextCheckingResult' (который имеет свойство 'NSRange')? – Larme