Reputation: 16921
I'm building a regular expression for use in a parser in an iOS app. Here's my code:
NSRegularExpression *regex =
[NSRegularExpression regularExpressionWithPattern:@"(?<=#EXT[^\r\n]*[\r\n]+)[^#][^\r\n]+"
options:NSRegularExpressionAnchorsMatchLines
error:®exError
];
if (regexError) {
NSLog(@"regexError: %@", regexError);
return nil;
}
From this answer.
This gives out this error:
regexError: Error Domain=NSCocoaErrorDomain Code=2048 "The operation couldn’t be completed. (Cocoa error 2048.)" UserInfo=0x8e86670 {NSInvalidValue=(?<=#EXT[^
Cocoa error 2048 is an NSFormattingErrorMinimum
according to the docs... But there's literally no further explanation.
What does it mean?
Upvotes: 4
Views: 2554
Reputation: 16022
are you trying to match a new line/line feed character? you've inserted a literal new line character into your regex... you need to instead insert the code for a newline. Try escaping as \\n
etc.
edit:
You have to escape all special strings. For example you want your regex string to contain \
+r
, not a linefeed character. So you need to use \\r
instead of \r
.
i.e.
"(?<=#EXT[^\\r\\n]*[\\r\\n]+)[^#][^\\r\\n]+"
edit 2:
You cannot have unlimited length strings in your look-behind. So, no *
and no +
allowed. This is per the ICU regex reference. (NSRegularExpression
uses ICU regex syntax.)
Upvotes: 3