【发布时间】:2023-03-30 02:08:01
【问题描述】:
考虑一下这段文字:
Paragraph 1: Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Paragraph 2 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Paragraph 3 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
在ObjC中,阅读上述文字时,paragraph1和paragraph2之间有两个\n\n行空格。但是在第 2 段和第 3 段之间有超过 3 个行空格\n\n\n\n。
我想要一个 NSRegularExpression 模式,它可以读取并返回这些段落,完全不考虑行空间的数量。
NSString *pattern = @"\n(*\n)\n";
NSRegularExpression* regex1 = [[NSRegularExpression alloc] initWithPattern:pattern options:NSRegularExpressionCaseInsensitive error:nil];
NSArray *array = [regex1 matchesInString:p options:0 range:NSMakeRange(0, [p length])];
for(NSTextCheckingResult *tcr in array){
NSTextCheckingResult *tcr = [regex1 firstMatchInString:p options:0 range:NSMakeRange(0, p.length)];
NSRange matchRange = [tcr rangeAtIndex:1];
NSString *amatch = [p substringWithRange:matchRange];
NSLog(@"Found string: %@", amatch);
}
我是 NSRegularExpression 的新手,任何对更好教程的参考都会很棒。在这种情况下,这是解决上述问题的正确方法吗?
【问题讨论】:
-
这根本不需要 NSRegularExpression。 NSString 中内置了很多自然语言解析函数。例如,您可以逐段枚举字符串。请参阅下面的答案。
标签: ios objective-c regex nsregularexpression