regex - 表情符号 NSTextStorage

标签 regex ios7 emoji nstextstorage

我目前正在 iOS 上开发自定义 NSTextStorage,我需要检测一些主题标签 (#)、提及和 url...此时一切正常,但如果用户尝试从键盘输入表情符号字符不显示,因为我使用的是 Helvetica 字体。

我正在使用正则表达式以这种方式检测主题标签、提及和 url:

NSRegularExpression *iExpression = [NSRegularExpression regularExpressionWithPattern:pattern
                                                                             options:0
                                                                               error:NULL];

NSRange paragraphRange = [self.string paragraphRangeForRange: self.editedRange];        

[iExpression enumerateMatchesInString:self.string
                              options:0
                                range:paragraphRange
                           usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop)
{
    // Changing format of match
}

其中 pattern 是一个有效的正则表达式模式,用于查找主题标签、网址或提及。

是否有一些模式可以检测表情符号字符?我应该使用什么模式,我已经尝试过这个(以及许多其他模式)[^\\x{1F601}-\\x{1F64F}\r\n]但没有成功。

谢谢。

最佳答案

我不确定 iOS 编程正则表达式模式,但我确定的是,虽然您指向的是正确的范围,但您排除了一个字符集,而不是通过使用脱字符 ^ 内的一个字符集 [] 定义。此外,我认为您不必转义那些十六进制点并匹配 CR 和 LF。

有一个完整的表情符号Unicode表,由它们对应的Unicode点组成here我收集在下面的单行表达式中:

([0-9#][\x{20E3}])|[\x{00ae}|\x{00a9}|\x{203C}|\x{2047}|\x{2048}|\x{2049}|\x{3030}|\x{303D}|\x{2139}|\x{2122}|\x{3297}|\x{3299}][\x{FE00}-\x{FEFF}]?|[\x{2190}-\x{21FF}][\x{FE00}-\x{FEFF}]?|[\x{2300}-\x{23FF}][\x{FE00}-\x{FEFF}]?|[\x{2460}-\x{24FF}][\x{FE00}-\x{FEFF}]?|[\x{25A0}-\x{25FF}][\x{FE00}-\x{FEFF}]?|[\x{2600}-\x{27BF}][\x{FE00}-\x{FEFF}]?|[\x{2900}-\x{297F}][\x{FE00}-\x{FEFF}]?|[\x{2B00}-\x{2BF0}][\x{FE00}-\x{FEFF}]?|[\x{1F000}-\x{1F6FF}][\x{FE00}-\x{FEFF}]?

在 PCRE 风格中,启用 UTF-16 标志是必须的,方法是在修饰符部分键入 u 以匹配 unicode 字符,因此它将是 /ABOVE- EXPRESSION/u 但不幸的是,我不知道在您的特定情况下它是如何完成的。

关于regex - 表情符号 NSTextStorage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25292418/

相关文章:

python - 使用表情符号使用 tweepy(python)流推文

javascript - 用于测试空格分隔字符的正则表达式

ios - 如何在iOS中发送带有特殊字符的JSON字符串?

java - Graphics2d drawString 不适用于彩色字体

iphone - 在iOS 7中,layoutSubviews方法在UIButton子类上不断被调用

ios - 从应用委托(delegate)中检索 managedObjectContext 时崩溃

Swift `join` 在加入带有国旗的字符串时挂起

php - 奇怪的 PHP 字符串错误

python - 使用正则表达式将数据提取到 Pandas 中的不同列

python - 使用python替换文件中的功能 block