【发布时间】:2015-05-17 00:19:38
【问题描述】:
简单的正则表达式问题。我有以下格式的字符串:
[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:options:range:,它返回一个NSArray的NSTextCheckingResult(它有一个NSRange属性)?
标签: ios regex nsregularexpression