我正在构建一个用于 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 ...但实际上没有进一步的解释。
这是什么意思?
您是否要匹配新的换行符/换行符?你已经在你的正则表达式中插入了一个文字换行符......你需要插入换行符的代码。尝试转义为 \\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/
欢迎光临 OGeek|极客世界-中国程序员成长平台 (https://ogeek.cn/) | Powered by Discuz! X3.4 |