我在试图匹配NSString中的CJK扩展B字符时遇到了困难。
CJK统一表意文字扩展B是一个Unicode块,包含了用于中文、日文、韩文和越南语的罕见的具有历史意义的CJK表意文字。
字符的unicode块是:从U+20000到U+2A6DF,我使用regex:[\\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
举个例子,如果我对Hiragana字符尝试一些更简单的东西,它就会起作用:
NSString *searchedString = @"ひ";
NSString *pattern = @"[\\u3040-\\u309F]";输出:matches
任何帮助都将不胜感激。谢谢。
发布于 2016-12-08 10:18:22
您可以使用\Uxxxxxxxx符号来匹配BMP平面外的那些Unicode字符。
Acc.转到ICU regex文档
\Uhhhhhhhh将字符与十六进制值hhhhhhhh相匹配。尽管最大的Unicode代码点是\U0010ffff,但必须提供确切的8位十六进制数字。
所以,用
NSString *pattern = @"[\\U00020000-\\U0002A6DF]+";https://stackoverflow.com/questions/41035865
复制相似问题