JavaでのEmojiの正規表現

5648 ワード

一、emojiの範囲
ウィキペディアのemojiの説明を参照してください
1.その他の記号と図形
その他の記号と図形は全部で768文字で、範囲は:U+1 F 300~U+1 F 5 FFで、Javaの中で正規表現は:
"[\\uD83C\\uDF00-\\uD83D\\uDDFF]"

2.補足記号および図形
補足記号および図形は全部で82文字で、範囲は:U+1 F 900~U+1 F 9 FF、Javaでは正規表現は:
"[\\uD83E\\uDD00-\\uD83E\\uDDFF]"

3.表情記号
表情記号は80文字で、範囲はU+1 F 600~U+1 F 64 Fで、Javaでは正規表現は:
"[\\uD83D\\uDE00-\\uD83D\\uDE4F]"

4.交通及び地図記号
交通及び地図記号は全部で103文字あり、範囲はU+1 F 680~U+1 F 6 FFであり、Javaでは正規表現は以下の通りである.
"[\\uD83D\\uDE80-\\uD83D\\uDEFF]"

5.その他の記号
その他の記号は全部で256文字で、範囲はU+2600~U+26 FFあるいはU+FE 0 Fをつづって、Javaの中で正規表現は:
"[\\u2600-\\u26FF]\\FE0F?"

6.装飾記号
装飾記号は全部で192文字で、範囲はU+2700~U+27 BFあるいはU+FE 0 Fをつづって、Javaの中で正規表現は:
"[\\u2700-\\u27BF]\\FE0F?"

7.クローズドアルファベット記号
クローズドアルファベットの数字記号には、U+24 C 2またはU+FE 0 Fをつづるemoji文字が1つしかありません.Javaでは、正規表現は次のとおりです.
"\\u24C2\\uFE0F?"

8.クローズドアルファベット補完記号
クローズドアルファベット補完記号は41個のemoji文字を含み、そのうち26個は領域指示記号に属する
8.1領域指示記号
区域指示記号は全部で26文字で、範囲はU+1 F 1 E 6~U+1 F 1 FFで、その中の2つのアルファベットは1つの国あるいは地区の旗を代表することができて、Javaの中で正規表現は:
"[\\uD83C\\uDDE6-\\uD83C\\uDDFF]{1,2}"

8.2その他のクローズドアルファベット数字補完emoji記号
エリア指示記号以外のemoji文字は、U+1 F 170、U+1 F 171、U+1 F 17 E、U+1 F 17 F、U+1 F 18 E、およびU+1 F 191~U+1 F 19 AまたはU+FE 0 Fを綴るJavaでの正規表現は、
"[\\uD83C\\uDD70\\uD83C\\uDD71\\uD83C\\uDD7E\\uD83C\\uDD7F\\uD83C\\uDD8E\\uD83C\\uDD91-\\uD83C\\uDD9A]\\uFE0F?"

9.キーキャップ記号(#⃣, *️⃣ and 0⃣-9⃣)
キャップ記号は全部で12文字で、U+0023、U+002A、U+0030~U+0039の12文字のキャップ基礎文字にU+FE 0 F、U+20 E 3を加える.
"\u0023\u20E3" > "#⃣"

"\u002A\uFE0F\u20E3" > "*️⃣"

"\u0030\u20E3" > "0⃣"

"\u0039\u20E3" > "9⃣"

ここでuFE 0 Fはオプションなので、Javaでは正規表現は次のようになります.
"[\\u0023\\u002A[\\u0030-\\u0039]]\\uFE0F?\\u20E3"

10.矢印記号
矢印記号には8つのemoji文字があり、範囲はU+249~U+2199とU+21 A 9~U+21 AAまたはU+FE 0 Fであり、Javaでは正規表現は以下の通りである.
"[\\u2194-\\u2199\\u21A9-\\u21AA]\\uFE0F?"

11.その他の記号および矢印
その他の記号および矢印には、U+2 B 05~U+2 B 07、U+2 B 1 B、U+2 B 1 C、U+2 B 50およびU+2 B 55またはU+2 B FE 0 Fの7つのemoji文字があり、Javaでは正規表現は:
"[\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55]\\uFE0F?"

12.補足矢印記号
補足矢印記号には、U+2934とU+2935またはU+FE 0 Fの2つのemoji文字があり、Javaでは次のように正規表現されています.
"[\\u2934\\u2935]\\uFE0F?"

13.CJK記号と句読点
CJK(Chinese,Japanese and Korean)記号と句読点には、U+3030とU+303 D、またはU+FE 0 Fの2つのemoji文字があり、Javaでは正規表現は:
"[\\u3030\\u303D]\\uFE0F?"

14.クローズドCJK文字と月記号
クローズドCJKアルファベットと月記号には、U+3297とU+3299またはU+FE 0 Fの2つのemoji文字があり、Javaでは正規表現は次のとおりです.
"[\\u3297\\u3299]\\uFE0F?"

15.閉鎖式表意文字補充記号
閉鎖式表意文字補充記号には15個のemoji文字があり、それぞれU+1 F 201、U+1 F 202、U+1 F 21 A、U+1 F 22 F、U+1 F 132~U+1 F 13 A、U+1 F 250、U+1 F 251またはU+FE 0 Fを綴り、Javaでは正規表現は以下の通りである.
"[\\uD83C\\uDE01\\uD83C\\uDE02\\uD83C\\uDE1A\\uD83C\\uDE2F\\uD83C\\uDE32-\\uD83C\\uDE3A\\uD83C\\uDE50\\uD83C\\uDE51]\\uFE0F?"

16.一般句読点
一般的な句読点には、U+203 CとU+2049またはU+FE 0 Fの2つのemoji文字があり、Javaでは次のように正規表現されています.
"[\\u203C\\u2049]\\uFE0F?"

17.ジオメトリ
ジオメトリには、U+25 AA、U+25 AB、U+25 B 6、U+25 C 0、U+25 FB~U+25 FEまたはU+FE 0 Fの8文字があり、Javaでは正規表現は次のとおりです.
"[\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE]\\uFE0F?"

18.ラテン語の補足記号
ラテン語の補足記号には、U+00 A 9とU+00 AEまたはU+FE 0 Fの2つのemoji文字があり、Javaでは正規表現は次のとおりです.
"[\\u00A9\\u00AE]\\uFE0F?"

19.アルファベット記号
アルファベット記号には2つのemoji文字があり、それぞれU+2122とU+2139またはU+FE 0 Fがつづられており、Javaでは正規表現は以下の通りである.
"[\\u2122\\u2139]\\uFE0F?"

20.マージャンカード
マージャンカードにはemoji文字が1つしかありません.U+1 F 004またはU+FE 0 Fをつづると、Javaでは正規表現は次のようになります.
"\\uD83C\\uDC04\\uFE0F?"

21.トランプ
トランプにはemoji文字が1つしかありません.U+1 F 0 CFまたはU+FE 0 Fをつづると、Javaでは正規表現は次のようになります.
"\\uD83C\\uDCCF\\uFE0F?"

22.その他の技術シンボル
その他の技術記号には18個のemoji文字があり、それぞれU+231 A、U+231 B、U+2328、U+23 CF、U+23 E 9~U+23 F 3とU+23 F 8~U+23 FAまたはU+FE 0 Fを綴り、Javaでは正規表現は以下の通りである.
"[\\u231A\\u231B\\u2328\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA]\\uFE0F?"

二、すべてのemojiを含む正規表現
"(?:[\uD83C\uDF00-\uD83D\uDDFF]|[\uD83E\uDD00-\uD83E\uDDFF]|[\uD83D\uDE00-\uD83D\uDE4F]|[\uD83D\uDE80-\uD83D\uDEFF]|[\u2600-\u26FF]\uFE0F?|[\u2700-\u27BF]\uFE0F?|\u24C2\uFE0F?|[\uD83C\uDDE6-\uD83C\uDDFF]{1,2}|[\uD83C\uDD70\uD83C\uDD71\uD83C\uDD7E\uD83C\uDD7F\uD83C\uDD8E\uD83C\uDD91-\uD83C\uDD9A]\uFE0F?|[\u0023\u002A\u0030-\u0039]\uFE0F?\u20E3|[\u2194-\u2199\u21A9-\u21AA]\uFE0F?|[\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55]\uFE0F?|[\u2934\u2935]\uFE0F?|[\u3030\u303D]\uFE0F?|[\u3297\u3299]\uFE0F?|[\uD83C\uDE01\uD83C\uDE02\uD83C\uDE1A\uD83C\uDE2F\uD83C\uDE32-\uD83C\uDE3A\uD83C\uDE50\uD83C\uDE51]\uFE0F?|[\u203C\u2049]\uFE0F?|[\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE]\uFE0F?|[\u00A9\u00AE]\uFE0F?|[\u2122\u2139]\uFE0F?|\uD83C\uDC04\uFE0F?|\uD83C\uDCCF\uFE0F?|[\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA]\uFE0F?)"

ここからコードを取得できますhttps://github.com/zly394/EmojiRegex
ps:どの大神が正規表現に詳しいのは正規表現を最適化するのに役立ちます!!!
参考記事
1. 《Emojis in Javascript》 https://medium.com/@thekevinscott/emojis-in-javascript-f693d0eb79fb#.o29wt8xei