Cocoa错误2048在cocoa中使用NSRegularExpression

我正在build立一个正则expression式在iOS应用程序的parsing器中使用。 这是我的代码:

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

从这个答案 。

这给出了这个错误:

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

cocoa错误2048是一个NSFormattingErrorMinimum 根据文档 …但是没有进一步的解释。

这是什么意思?

你想匹配一个新的行/换行符? 你已经插入一个文字新的行字符到你的正则expression式中…你需要改为插入一个换行符的代码。 尝试转义为\\n等。

编辑:

你必须逃避所有特殊的string。 例如,您希望您的正则expression式string包含\ + r ,而不是换行字符。 所以你需要使用\\r而不是\r

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

编辑2:

你的背后不能有无限长的string。 所以,没有*和不允许。 这是每个ICU正则expression式的参考 。 ( NSRegularExpression使用ICU正则expression式语法。)