Я пытаюсь отсканировать заданную строку на номер.Номер не может быть после "v / v. / Vol / vol.", И не может быть в скобках.Вот что у меня есть:
NSString *regex = @"(?i)(?<!v|vol|vol\\.|v\\.)\\d{1,4}(?![\\(]{0}.*\\))";
NSLog(@"Result: %@", [@"test test test 4334 test test" stringByMatching:regex]);
NSLog(@"Result: %@", [@"test test test(4334) test test" stringByMatching:regex]);
NSLog(@"Result: %@", [@"test test test(vol.4334) test test" stringByMatching:regex]);
Ужасно, это не работает.Мое регулярное выражение можно разделить на четыре части:
(?i)
- сделать регистр нечувствительным к регистру
(?<!v|vol|vol\\.|v\\.)
- отрицательное утверждение для v / v. / Vol / vol.
\\d{1,4}
- номер, который я ищу, 1-4 цифры.
(?![\\(]{0}.*\\))
- отрицательное прогнозное утверждение: число не может предшествовать a), если только нет (до него.
Удивительно, но если я уберу проверочное утверждение, оно сработает. В чем здесь проблема? Я использую RegexKitLite, который использует синтаксис регулярных выражений ICU.