我正在构建一个用于 iOS 应用程序解析器的正则表达式。这是我的代码:
NSRegularExpression *regex =
[NSRegularExpression regularExpressionWithPattern"(?<=#EXT[^\r\n]*[\r\n]+)[^#][^\r\n]+"
options:NSRegularExpressionAnchorsMatchLines
error:®exError
];
if (regexError) {
NSLog(@"regexError: %@", regexError);
return nil;
}
来自 this answer .
这给出了这个错误:
regexError: Error Domain=NSCocoaErrorDomain Code=2048 “操作无法完成。(Cocoa 错误 2048。)” UserInfo=0x8e86670 {NSInvalidValue=(?<=#EXT[^
Cocoa 错误 2048 是 NSFormattingErrorMinimum according to the docs ...但实际上没有进一步的解释。
这是什么意思?
Best Answer-推荐答案 strong>
您是否要匹配新的换行符/换行符?你已经在你的正则表达式中插入了一个文字换行符......你需要插入换行符的代码。尝试转义为 \\n 等。
编辑:
您必须转义 所有 特殊字符串。例如,您希望您的正则表达式字符串包含 \ +r ,而不是换行符。所以你需要使用 \\r 而不是 \r 。
即
"(?<=#EXT[^\\r\\n]*[\\r\\n]+)[^#][^\\r\\n]+"
编辑 2:
您的后视中不能有无限长度的字符串。因此,不允许 * 和 + 。这是根据 ICU regex reference . (NSRegularExpression 使用 ICU 正则表达式语法。)
关于ios - 在 Cocoa 中使用 NSRegularExpression 时出现 Cocoa 错误 2048,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/39325090/
|