2014-02-05 2 views
1

Я пытаюсь использовать NSRegularExpression для поиска строки внутри pbxproj (внутри папки .xcodeproj).Ошибка какао 2048 на NSRegularExpression

Я ищу флаги компилятора в области «Начало секции PBXBuildFile»

NSString* findFlagsRegex = @"([A-Z0-9]{24}\\s\\/\\*\\s[A-Za-z\\.\\s0-9]+\\*\\/\\s=\\s{isa\\s\\=\\s[A-Za-z]*;\\s?fileRef\\s\\=\\s[A-Z0-9]*\\s\\/\\*\\s[A-Za-z0-9\\s\\.]*\\*\\/;\\ssettings\\s\\=\\s{[A-Za-z0-9_\\s\\=\"-]*;\\s\\};\\s};)"; 
NSRegularExpression* expression3 = [NSRegularExpression regularExpressionWithPattern:findFlagsRegex options:kNilOptions error:&err]; 
NSLog(@"Error: %@",[err description]); 

Error Domain=NSCocoaErrorDomain Code=2048 "The value “([A-Z0-9]{24}\s\/\*\s[A-Za-z\.\s0-9]+\*\/\s=\s{isa\s\=\s[A-Za-z]*;\s?fileRef\s\=\s[A-Z0-9]*\s\/\*\s[A-Za-z0-9\s\.]*\*\/;\ssettings\s\=\s{[A-Za-z0-9_\s\="-]*;\s\};\s};)” is invalid." UserInfo=0x61800026a7c0 {NSInvalidValue=([A-Z0-9]{24}\s\/\*\s[A-Za-z\.\s0-9]+\*\/\s=\s{isa\s\=\s[A-Za-z]*;\s?fileRef\s\=\s[A-Z0-9]*\s\/\*\s[A-Za-z0-9\s\.]*\*\/;\ssettings\s\=\s{[A-Za-z0-9_\s\="-]*;\s\};\s};)} 

копирует:

([A-Z0-9]{24}\s\/\*\s[A-Za-z\.\s0-9]+\*\/\s=\s{isa\s\=\s[A-Za-z]*;\s?fileRef\s\=\s[A-Z0-9]*\s\/\*\s[A-Za-z0-9\s\.]*\*\/;\ssettings\s\=\s{[A-Za-z0-9_\s\="-]*;\s\};\s};) 

Регулярное выражение выше работ в RegexPal, непосредственно скопировав его из неверное значение из сообщения об ошибке по тем же данным теста ... поэтому я не уверен, что не так:/

Не уверен, что это что-то добавит, но это приложение для Mac и нет t приложение iOS.

ответ

2

Ваш шаблон содержит одинокую литературу }. Я полагаю, вы хотели иметь два литерала { s и два литерала } s - это слегка измененная версия шаблона, который у вас был в вашем вопросе, с тремя добавленными \\ s, чтобы избежать фигурных скобок, которые в настоящее время не экранированы в вашем коде ,

NSString* findFlagsRegex = @"([A-Z0-9]{24}\\s\\/\\*\\s[A-Za-z\\.\\s0-9]+\\*\\/\\s=\\s\\{isa\\s\\=\\s[A-Za-z]*;\\s?fileRef\\s\\=\\s[A-Z0-9]*\\s\\/\\*\\s[A-Za-z0-9\\s\\.]*\\*\\/;\\ssettings\\s\\=\\s\\{[A-Za-z0-9_\\s\\=\"-]*;\\s\\};\\s\\};)"; 

Я не уверен, является ли ошибка есть с RegexPal, или если RegexPal зависит от копии JS, что ваш браузер использует, или если ошибка есть с NSRegularExpression с, но в любом случае, вылетающим персонажем, который не нужно выходить из строя, не должно вызывать каких-либо проблем (или, по крайней мере, это не мое понимание регулярных выражений, которые он должен делать.)

+0

Спасибо ... это сводило меня с ума! –