在Cocoa中使用NSRegularExpression时的Cocoa错误2048

时间:2013-12-17 17:07:19

标签: ios regex cocoa nsregularexpression

我正在构建一个正则表达式,以便在iOS应用中的解析器中使用。这是我的代码:

NSRegularExpression *regex =
[NSRegularExpression regularExpressionWithPattern:@"(?<=#EXT[^\r\n]*[\r\n]+)[^#][^\r\n]+"
                                          options:NSRegularExpressionAnchorsMatchLines
                                            error:&regexError
 ];
if (regexError) {
    NSLog(@"regexError: %@", regexError);
    return nil;
}

来自this answer

这给出了这个错误:

regexError: Error Domain=NSCocoaErrorDomain Code=2048 "The operation couldn’t be completed. (Cocoa error 2048.)" UserInfo=0x8e86670 {NSInvalidValue=(?<=#EXT[^

可可错误2048是NSFormattingErrorMinimum according to the docs ......但实际上没有进一步的解释。

这是什么意思?

1 个答案:

答案 0 :(得分:3)

您是否尝试匹配新的广告/换行符?你已经在你的正则表达式中插入了一个新的直线字符...你需要插入换行代码。尝试转义为\\n

修改

您必须转义所有特殊字符串。例如,您希望正则表达式字符串包含\ + r,而不是换行符。因此,您需要使用\\r代替\r

"(?<=#EXT[^\\r\\n]*[\\r\\n]+)[^#][^\\r\\n]+"

编辑2:

你的后卫不能拥有无限长度的字符串。因此,不允许*+。这是ICU regex reference。 (NSRegularExpression使用ICU正则表达式语法。)