IOS Regex: Неизвестная escape-последовательность "\ |"
Я получаю странное предупреждение, и в результате мой поиск в регулярном выражении не работает. Здесь строка:
NSRange r = [HTML rangeOfString:@"\|(.*)\|" options:NSRegularExpressionSearch];
Где HTML
- строка, в которой я уверен, содержит одно совпадение для указанного выше регулярного выражения.
Предупреждение относится только к первому вхождению "\ |", а не к обоим.
Любая помощь очень ценится!
Ответы
Ответ 1
Вы получаете предупреждение, потому что \|
не является допустимой escape-последовательностью в Objective-C (или C или С++, если на то пошло). Компилятор игнорирует это и просто использует вместо него необработанный символ |
, поэтому строка, которую вы фактически передаете, @"|(.*)|"
.
Чтобы получить нужное поведение, вам нужно избежать обратной косой черты в исходном коде, чтобы механизм регулярных выражений видел буквальную обратную косую черту и интерпретировал символ |
как литерал, а не как чередование, например. @"\\|(.*)\\|"
.
Ответ 2
Просто добавьте, если вы имеете дело со специальными последовательностями символов в формате Unicode, вы можете использовать что-то вроде этого:
const unichar specialCharSequence='some special character';
if(specialCharSequence==L'\uxxxx')
{
//handle the occurence of this special character
}