我正在构建一个正则表达式,以便在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 "The operation couldn’t be completed. (Cocoa error 2048.)" UserInfo=0x8e86670 {NSInvalidValue=(?<=#EXT[^
可可错误2048是NSFormattingErrorMinimum
according to the docs ......但实际上没有进一步的解释。
这是什么意思?
答案 0 :(得分:3)
您是否尝试匹配新的广告/换行符?你已经在你的正则表达式中插入了一个新的直线字符...你需要插入换行代码。尝试转义为\\n
等
修改强>
您必须转义所有特殊字符串。例如,您希望正则表达式字符串包含\
+ r
,而不是换行符。因此,您需要使用\\r
代替\r
。
即
"(?<=#EXT[^\\r\\n]*[\\r\\n]+)[^#][^\\r\\n]+"
编辑2:
你的后卫不能拥有无限长度的字符串。因此,不允许*
和+
。这是ICU regex reference。 (NSRegularExpression
使用ICU正则表达式语法。)