3

私は現在、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ハッシュタグ、URL、またはメンションを検索するための有効な正規表現パターンはどこにありますか。

絵文字を検出するパターンはありますか? どのパターンを使用すればよいか、これ(および他の多くのパターン)を試してみましたが[^\\x{1F601}-\\x{1F64F}\r\n]成功しませんでした。

ありがとう。

4

1 に答える 1

0

iOSプログラミングの正規表現パターンについてはわかりませんが、正しい範囲を指しているにもかかわらず、文字セット定義^内でキャレット記号を使用して含めるのではなく、文字セットを除外していることは確かです。[]また、これらの 16 進ポイントをエスケープして、CR と LF に一致させる必要はないと思います。

ここには、対応する Unicode ポイントで構成される完全な絵文字 Unicode テーブルがあり、以下の 1 行の式にまとめられています。

([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/ABOVE-EXPRESSION/u

于 2015-05-21T19:20:48.343 に答える