У меня возникли проблемы с попыткой сопоставить символы CJK extension B в NSString
.Матч CJK расширение B в Objective-C
Wikipédia CJK Unified Ideographs Extension B :
CJK Unified Идеограммы Extension B представляет собой блок Unicode, содержащий редкие и исторические CJK идеограммы для китайского, японского, корейского и вьетнамского .
ЮНИКОДу блок из персонажей: от U+20000
до U+2A6DF
Я использую регулярное выражение: [\\ud840-\\ud868][\\udc00-\\udfff]|\\ud869[\\udc00-\\uded6]
, чтобы соответствовать CJK расширение символов B.
Вот мой код:
NSString *searchedString = @""; // First character (U+20000)
NSString *pattern = @"[\\ud840-\\ud868][\\udc00-\\udfff]|\\ud869[\\udc00-\\uded6]";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern options:NSRegularExpressionCaseInsensitive error:nil];
if ([regex numberOfMatchesInString:searchedString options:0 range:NSMakeRange(0, [searchedString length])] > 0) {
NSLog(@"matches");
} else {
NSLog(@"doesn't match");
}
Выход: doesn't match
Для Exemple, если я попробовать что-то более простое для Хираганы характера он работает:
NSString *searchedString = @"ひ";
NSString *pattern = @"[\\u3040-\\u309F]";
Выход: matches
Любая помощь будет высоко оценена. Благодарю.
Ваш шаблон является недействительным. Синтаксис группы без захвата - '(?: ...)'. Кроме того, 'g' в конце означает буквенное письмо' g' - оно предназначено? –
Возможно ли, что он не работает, потому что значения находятся в 'UTF-16', а не' UTF-8'? –
@ WiktorStribiżew Извините, я случайно удалил часть (?: .., когда я отформатировал мое сообщение. Чтобы упростить это, я обновил свой вопрос –