Cocoa错误2048在cocoa中使用NSRegularExpression
我正在build立一个正则expression式在iOS应用程序的parsing器中使用。 这是我的代码:
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(?<=#EXT[^\r\n]*[\r\n]+)[^#][^\r\n]+" options:NSRegularExpressionAnchorsMatchLines error:®exError ]; 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式语法。)
- 使用正则expression式从用户代理检测iOS版本号
- 在Swift中使用正则expression式进行简单search时,如何避免由于searchstring中的特殊字符造成的错误?
- 在iOS中正则expression式
- iPhone的iOS是否有一个代数计算器的应用程序的expression式分析器?
- 为什么在我的正则expression式中有多个捕获组会崩溃我的应用程序?
- 如何检测用户代理iOS 6和所有次要版本?
- Swift – 如何使用Firebase中的“shouldChangeTextInRange”进行实时search?
- NSRegularExpression分隔段落
- Swift正则expression式格式?