C# - 正则表达式以从任何字符串中找到一对Unicode Codepoint的替代表



我正在尝试解析一条可能包含表情符号的消息。可以收到的示例消息看起来像:

{"type":"chat","msg":"UserName:u00a0ud83dude0b n"}

应该匹配的是 u00a0作为单个字符,而 ud83d ude0b作为一对。

我的正则是可以拉出单个代码的正则是与完整表情符号匹配的配对:

\u[a-z0-9]{4}

是否有一种干净的方法来说明句子中的任何/多个表情符号,以便我可以用自己的功能替换替代对?谢谢!

编辑:这是我将与Regex一起使用的功能

string ConvertToUnicode(string SurrogatePair)
{
    string returnValue = "";
    for (var i = 0; i < SurrogatePair.Length; i += char.IsSurrogatePair(SurrogatePair, i) ? 2 : 1)
    {
        var codepoint = char.ConvertToUtf32(SurrogatePair, i);

        returnValue = String.Format("U+{0:X4}", codepoint);
    }
    return returnValue;
}

i有一个词典,其中键是Unicode,值是对表情符号图像的引用,因此我可以在Unity UI元素中显示它。

编辑2:

这个问题太广泛了,我将要具体地了解我要完成的工作。我正在通过Websocket连接从服务器接收JSON消息。此消息正在统一面板中显示,其中每个消息都是文本网格pro文本对象。当发送表情符号时,该消息的显示与上面的示例消息相似,唯一的更改是替代对根据发送的表情符号更改。为了将相应的表情符号正确插入文本网格pro对象中,我需要获取指向正确表情符号的精灵ATLAS ID。由于我没有用手将精灵插入地图集,而是从剪接的精灵纸中读取它们,因此访问每个图像的唯一方法是通过其索引ID。要正确地通过ID识别Atlas中的表情符号,我创建了一个词典,该字典将Unicode插入顺序时,因为它们出现在Sprite纸中作为键,其中该值是Atlas中的索引。我现在要做的是使用正则表达式分析表情符号收到的消息,将此解析的数据发送到我上面发布的函数中以将其转换为Unicode值,然后从字典中检索正确的ID,以最终将表情符号插入表情符号最初进入前端。如果有一种更好的方法来解决这个问题,请告诉我,但是从我所做的研究中,将图像插入统一文本对象的唯一有效方法就是我的操作方式。因此,我需要从消息中获得替代对。

编辑3:

如果其他人偶然发现了这个问题,我将离开我想到的解决方案,这些解决方案是通过Websocket Server从HTML网站获取表情符号的,进入Unity TextMeshpro。

这是一个Google电子表格,其中包含我用来创建Unity字典/Sprite Atlas的精彩表:https://docs.google.com/spreadsheets/d/1xqy1n9ca1n9ca1hx_pnsxosxoisxjanzriiisxjanzrii qgg0gd25vyemk15vyempesphar usp = sshar。

然后,我使用了可以在此处找到的库:https://github.com/aaronpk/emoji-detector-php

它可以解析一个字符串并找到表情符号。我替换了下面SLN提供的正则言论的正则言论,然后对主脚本进行了调整,以返回消息文本,但表情符号用包裹在分配器中的十六进制替换为我可以在Unity方面找到的分配器。

<?php
namespace Emoji;
define('LONGEST_EMOJI', 8);
function detect_emoji($string) {
  // Find all the emoji in the input string
  $prevencoding = mb_internal_encoding();
  mb_internal_encoding('UTF-8');
  $data = array();
    $test = $string;
  static $map;
  if(!isset($map))
    $map = _load_map();
  static $regexp;
  if(!isset($regexp))
    $regexp = _load_regexp();
  if(preg_match_all($regexp, $string, $matches)) {
    foreach($matches[0] as $ch) {
      $points = array();
      for($i=0; $i<mb_strlen($ch); $i++) {
        $points[] = strtoupper(dechex(uniord(mb_substr($ch, $i, 1))));
      }
      $hexstr = implode('-', $points);
        $theMatch = $string.exec($ch);
        $test = substr_replace($test, "[[[[".$hexstr."]]]]", strpos($test, $ch), strlen($ch));
    }
  }
  if($prevencoding)
    mb_internal_encoding($prevencoding);
  return $test;
}
function _load_map() {
  return json_decode(file_get_contents(dirname(__FILE__).'/map.json'), true);
}
function _load_regexp() {
  return '/(?:' . json_decode(file_get_contents(dirname(__FILE__).'/regexp.json')) . ')/u';
}
function uniord($c) {
  $ord0 = ord($c[0]); if ($ord0>=0   && $ord0<=127) return $ord0;
  $ord1 = ord($c[1]); if ($ord0>=192 && $ord0<=223) return ($ord0-192)*64 + ($ord1-128);
  $ord2 = ord($c[2]); if ($ord0>=224 && $ord0<=239) return ($ord0-224)*4096 + ($ord1-128)*64 + ($ord2-128);
  $ord3 = ord($c[3]); if ($ord0>=240 && $ord0<=247) return ($ord0-240)*262144 + ($ord1-128)*4096 + ($ord2-128)*64 + ($ord3-128);
  return false;
}

要在我的服务器脚本中调用此功能,我只需要添加:

include("src/Emoji.php"); 

在我脚本的顶部,并将功能称为如下:

$message = Emojidetect_emoji($message);

我确保将其存储在服务器代码中时仅发送给我的Unity客户端。

在统一方面,要找到需要更换的表情符号,我使用了:

string emojiPattern = @"(?<=[[[[).[^]]]]]*";
 MatchCollection emojiMatch = Regex.Matches(messageString, emojiPattern);
            for(int x = 0; x < emojiMatch.Count; x++)
            { 
                messageString =  messageString.Replace("[[[[" + emojiMatch[x].Value +  "]]]]", "<sprite=" + emojiDictionary[emojiMatch[x].Value.ToLower()].ToString() + ">");
            }

作为文本元素,我正在实例化是文本网格Pro Text GUI元素,它能够将我使用Sprite纸制作的Sprite Atlas中的图像转换为图像。希望将来对某人有所帮助!

一个完整的C#REGEX查找任何/all v12 emoji

[#*0-9]uFE0Fu20E3|[u00A9u00AEu203Cu2049u2122u2139u2194-u2199u21A9u21AAu231Au231Bu2328u23CFu23E9-u23F3u23F8-u23FAu24C2u25AAu25ABu25B6u25C0u25FB-u25FEu2600-u2604u260Eu2611u2614u2615u2618]|u261D(?:uD83C[uDFFB-uDFFF])?|[u2620u2622u2623u2626u262Au262Eu262Fu2638-u263Au2640u2642u2648-u2653u265Fu2660u2663u2665u2666u2668u267Bu267Eu267Fu2692-u2697u2699u269Bu269Cu26A0u26A1u26AAu26ABu26B0u26B1u26BDu26BEu26C4u26C5u26C8u26CEu26CFu26D1u26D3u26D4u26E9u26EAu26F0-u26F5u26F7u26F8]|u26F9(?:uD83C[uDFFB-uDFFF](?:u200D[u2640u2642]uFE0F)?|uFE0Fu200D[u2640u2642]uFE0F)?|[u26FAu26FDu2702u2705u2708u2709]|[u270A-u270D](?:uD83C[uDFFB-uDFFF])?|[u270Fu2712u2714u2716u271Du2721u2728u2733u2734u2744u2747u274Cu274Eu2753-u2755u2757u2763u2764u2795-u2797u27A1u27B0u27BFu2934u2935u2B05-u2B07u2B1Bu2B1Cu2B50u2B55u3030u303Du3297u3299]|uD83C(?:[uDC04uDCCFuDD70uDD71uDD7EuDD7FuDD8EuDD91-uDD9A]|uDDE6uD83C[uDDE8-uDDECuDDEEuDDF1uDDF2uDDF4uDDF6-uDDFAuDDFCuDDFDuDDFF]|uDDE7uD83C[uDDE6uDDE7uDDE9-uDDEFuDDF1-uDDF4uDDF6-uDDF9uDDFBuDDFCuDDFEuDDFF]|uDDE8uD83C[uDDE6uDDE8uDDE9uDDEB-uDDEEuDDF0-uDDF5uDDF7uDDFA-uDDFF]|uDDE9uD83C[uDDEAuDDECuDDEFuDDF0uDDF2uDDF4uDDFF]|uDDEAuD83C[uDDE6uDDE8uDDEAuDDECuDDEDuDDF7-uDDFA]|uDDEBuD83C[uDDEE-uDDF0uDDF2uDDF4uDDF7]|uDDECuD83C[uDDE6uDDE7uDDE9-uDDEEuDDF1-uDDF3uDDF5-uDDFAuDDFCuDDFE]|uDDEDuD83C[uDDF0uDDF2uDDF3uDDF7uDDF9uDDFA]|uDDEEuD83C[uDDE8-uDDEAuDDF1-uDDF4uDDF6-uDDF9]|uDDEFuD83C[uDDEAuDDF2uDDF4uDDF5]|uDDF0uD83C[uDDEAuDDEC-uDDEEuDDF2uDDF3uDDF5uDDF7uDDFCuDDFEuDDFF]|uDDF1uD83C[uDDE6-uDDE8uDDEEuDDF0uDDF7-uDDFBuDDFE]|uDDF2uD83C[uDDE6uDDE8-uDDEDuDDF0-uDDFF]|uDDF3uD83C[uDDE6uDDE8uDDEA-uDDECuDDEEuDDF1uDDF4uDDF5uDDF7uDDFAuDDFF]|uDDF4uD83CuDDF2|uDDF5uD83C[uDDE6uDDEA-uDDEDuDDF0-uDDF3uDDF7-uDDF9uDDFCuDDFE]|uDDF6uD83CuDDE6|uDDF7uD83C[uDDEAuDDF4uDDF8uDDFAuDDFC]|uDDF8uD83C[uDDE6-uDDEAuDDEC-uDDF4uDDF7-uDDF9uDDFBuDDFD-uDDFF]|uDDF9uD83C[uDDE6uDDE8uDDE9uDDEB-uDDEDuDDEF-uDDF4uDDF7uDDF9uDDFBuDDFCuDDFF]|uDDFAuD83C[uDDE6uDDECuDDF2uDDF3uDDF8uDDFEuDDFF]|uDDFBuD83C[uDDE6uDDE8uDDEAuDDECuDDEEuDDF3uDDFA]|uDDFCuD83C[uDDEBuDDF8]|uDDFDuD83CuDDF0|uDDFEuD83C[uDDEAuDDF9]|uDDFFuD83C[uDDE6uDDF2uDDFC]|[uDE01uDE02uDE1AuDE2FuDE32-uDE3AuDE50uDE51uDF00-uDF21uDF24-uDF84]|uDF85(?:uD83C[uDFFB-uDFFF])?|[uDF86-uDF93uDF96uDF97uDF99-uDF9BuDF9E-uDFC1]|uDFC2(?:uD83C[uDFFB-uDFFF])?|[uDFC3uDFC4](?:u200D[u2640u2642]uFE0F|uD83C[uDFFB-uDFFF](?:u200D[u2640u2642]uFE0F)?)?|[uDFC5uDFC6]|uDFC7(?:uD83C[uDFFB-uDFFF])?|[uDFC8uDFC9]|uDFCA(?:u200D[u2640u2642]uFE0F|uD83C[uDFFB-uDFFF](?:u200D[u2640u2642]uFE0F)?)?|[uDFCBuDFCC](?:uD83C[uDFFB-uDFFF](?:u200D[u2640u2642]uFE0F)?|uFE0Fu200D[u2640u2642]uFE0F)?|[uDFCD-uDFF0]|uDFF3(?:uFE0Fu200DuD83CuDF08)?|uDFF4(?:u200Du2620uFE0F|uDB40uDC67uDB40uDC62uDB40(?:uDC65uDB40uDC6EuDB40uDC67|uDC73uDB40uDC63uDB40uDC74|uDC77uDB40uDC6CuDB40uDC73)uDB40uDC7F)?|[uDFF5uDFF7-uDFFF])|uD83D(?:[uDC00-uDC14]|uDC15(?:u200DuD83EuDDBA)?|[uDC16-uDC40]|uDC41(?:uFE0Fu200DuD83DuDDE8uFE0F)?|[uDC42uDC43](?:uD83C[uDFFB-uDFFF])?|[uDC44uDC45]|[uDC46-uDC50](?:uD83C[uDFFB-uDFFF])?|[uDC51-uDC65]|[uDC66uDC67](?:uD83C[uDFFB-uDFFF])?|uDC68(?:u200D(?:[u2695u2696u2708]uFE0F|u2764uFE0Fu200DuD83D(?:uDC8Bu200DuD83D)?uDC68|uD83C[uDF3EuDF73uDF93uDFA4uDFA8uDFEBuDFED]|uD83D(?:uDC66(?:u200DuD83DuDC66)?|uDC67(?:u200DuD83D[uDC66uDC67])?|[uDC68uDC69]u200DuD83D(?:uDC66(?:u200DuD83DuDC66)?|uDC67(?:u200DuD83D[uDC66uDC67])?)|[uDCBBuDCBCuDD27uDD2CuDE80uDE92])|uD83E[uDDAF-uDDB3uDDBCuDDBD])|uD83C(?:uDFFB(?:u200D(?:[u2695u2696u2708]uFE0F|uD83C[uDF3EuDF73uDF93uDFA4uDFA8uDFEBuDFED]|uD83D[uDCBBuDCBCuDD27uDD2CuDE80uDE92]|uD83E[uDDAF-uDDB3uDDBCuDDBD]))?|uDFFC(?:u200D(?:[u2695u2696u2708]uFE0F|uD83C[uDF3EuDF73uDF93uDFA4uDFA8uDFEBuDFED]|uD83D[uDCBBuDCBCuDD27uDD2CuDE80uDE92]|uD83E(?:uDD1Du200DuD83DuDC68uD83CuDFFB|[uDDAF-uDDB3uDDBCuDDBD])))?|uDFFD(?:u200D(?:[u2695u2696u2708]uFE0F|uD83C[uDF3EuDF73uDF93uDFA4uDFA8uDFEBuDFED]|uD83D[uDCBBuDCBCuDD27uDD2CuDE80uDE92]|uD83E(?:uDD1Du200DuD83DuDC68uD83C[uDFFBuDFFC]|[uDDAF-uDDB3uDDBCuDDBD])))?|uDFFE(?:u200D(?:[u2695u2696u2708]uFE0F|uD83C[uDF3EuDF73uDF93uDFA4uDFA8uDFEBuDFED]|uD83D[uDCBBuDCBCuDD27uDD2CuDE80uDE92]|uD83E(?:uDD1Du200DuD83DuDC68uD83C[uDFFB-uDFFD]|[uDDAF-uDDB3uDDBCuDDBD])))?|uDFFF(?:u200D(?:[u2695u2696u2708]uFE0F|uD83C[uDF3EuDF73uDF93uDFA4uDFA8uDFEBuDFED]|uD83D[uDCBBuDCBCuDD27uDD2CuDE80uDE92]|uD83E(?:uDD1Du200DuD83DuDC68uD83C[uDFFB-uDFFE]|[uDDAF-uDDB3uDDBCuDDBD])))?))?|uDC69(?:u200D(?:[u2695u2696u2708]uFE0F|u2764uFE0Fu200DuD83D(?:uDC8Bu200DuD83D)?[uDC68uDC69]|uD83C[uDF3EuDF73uDF93uDFA4uDFA8uDFEBuDFED]|uD83D(?:uDC66(?:u200DuD83DuDC66)?|uDC67(?:u200DuD83D[uDC66uDC67])?|uDC69u200DuD83D(?:uDC66(?:u200DuD83DuDC66)?|uDC67(?:u200DuD83D[uDC66uDC67])?)|[uDCBBuDCBCuDD27uDD2CuDE80uDE92])|uD83E[uDDAF-uDDB3uDDBCuDDBD])|uD83C(?:uDFFB(?:u200D(?:[u2695u2696u2708]uFE0F|uD83C[uDF3EuDF73uDF93uDFA4uDFA8uDFEBuDFED]|uD83D[uDCBBuDCBCuDD27uDD2CuDE80uDE92]|uD83E(?:uDD1Du200DuD83DuDC68uD83C[uDFFC-uDFFF]|[uDDAF-uDDB3uDDBCuDDBD])))?|uDFFC(?:u200D(?:[u2695u2696u2708]uFE0F|uD83C[uDF3EuDF73uDF93uDFA4uDFA8uDFEBuDFED]|uD83D[uDCBBuDCBCuDD27uDD2CuDE80uDE92]|uD83E(?:uDD1Du200DuD83D(?:uDC68uD83C[uDFFBuDFFD-uDFFF]|uDC69uD83CuDFFB)|[uDDAF-uDDB3uDDBCuDDBD])))?|uDFFD(?:u200D(?:[u2695u2696u2708]uFE0F|uD83C[uDF3EuDF73uDF93uDFA4uDFA8uDFEBuDFED]|uD83D[uDCBBuDCBCuDD27uDD2CuDE80uDE92]|uD83E(?:uDD1Du200DuD83D(?:uDC68uD83C[uDFFBuDFFCuDFFEuDFFF]|uDC69uD83C[uDFFBuDFFC])|[uDDAF-uDDB3uDDBCuDDBD])))?|uDFFE(?:u200D(?:[u2695u2696u2708]uFE0F|uD83C[uDF3EuDF73uDF93uDFA4uDFA8uDFEBuDFED]|uD83D[uDCBBuDCBCuDD27uDD2CuDE80uDE92]|uD83E(?:uDD1Du200DuD83D(?:uDC68uD83C[uDFFB-uDFFDuDFFF]|uDC69uD83C[uDFFB-uDFFD])|[uDDAF-uDDB3uDDBCuDDBD])))?|uDFFF(?:u200D(?:[u2695u2696u2708]uFE0F|uD83C[uDF3EuDF73uDF93uDFA4uDFA8uDFEBuDFED]|uD83D[uDCBBuDCBCuDD27uDD2CuDE80uDE92]|uD83E(?:uDD1Du200DuD83D[uDC68uDC69]uD83C[uDFFB-uDFFE]|[uDDAF-uDDB3uDDBCuDDBD])))?))?|uDC6A|[uDC6B-uDC6D](?:uD83C[uDFFB-uDFFF])?|uDC6E(?:u200D[u2640u2642]uFE0F|uD83C[uDFFB-uDFFF](?:u200D[u2640u2642]uFE0F)?)?|uDC6F(?:u200D[u2640u2642]uFE0F)?|uDC70(?:uD83C[uDFFB-uDFFF])?|uDC71(?:u200D[u2640u2642]uFE0F|uD83C[uDFFB-uDFFF](?:u200D[u2640u2642]uFE0F)?)?|uDC72(?:uD83C[uDFFB-uDFFF])?|uDC73(?:u200D[u2640u2642]uFE0F|uD83C[uDFFB-uDFFF](?:u200D[u2640u2642]uFE0F)?)?|[uDC74-uDC76](?:uD83C[uDFFB-uDFFF])?|uDC77(?:u200D[u2640u2642]uFE0F|uD83C[uDFFB-uDFFF](?:u200D[u2640u2642]uFE0F)?)?|uDC78(?:uD83C[uDFFB-uDFFF])?|[uDC79-uDC7B]|uDC7C(?:uD83C[uDFFB-uDFFF])?|[uDC7D-uDC80]|[uDC81uDC82](?:u200D[u2640u2642]uFE0F|uD83C[uDFFB-uDFFF](?:u200D[u2640u2642]uFE0F)?)?|uDC83(?:uD83C[uDFFB-uDFFF])?|uDC84|uDC85(?:uD83C[uDFFB-uDFFF])?|[uDC86uDC87](?:u200D[u2640u2642]uFE0F|uD83C[uDFFB-uDFFF](?:u200D[u2640u2642]uFE0F)?)?|[uDC88-uDCA9]|uDCAA(?:uD83C[uDFFB-uDFFF])?|[uDCAB-uDCFDuDCFF-uDD3DuDD49-uDD4EuDD50-uDD67uDD6FuDD70uDD73]|uDD74(?:uD83C[uDFFB-uDFFF])?|uDD75(?:uD83C[uDFFB-uDFFF](?:u200D[u2640u2642]uFE0F)?|uFE0Fu200D[u2640u2642]uFE0F)?|[uDD76-uDD79]|uDD7A(?:uD83C[uDFFB-uDFFF])?|[uDD87uDD8A-uDD8D]|[uDD90uDD95uDD96](?:uD83C[uDFFB-uDFFF])?|[uDDA4uDDA5uDDA8uDDB1uDDB2uDDBCuDDC2-uDDC4uDDD1-uDDD3uDDDC-uDDDEuDDE1uDDE3uDDE8uDDEFuDDF3uDDFA-uDE44]|[uDE45-uDE47](?:u200D[u2640u2642]uFE0F|uD83C[uDFFB-uDFFF](?:u200D[u2640u2642]uFE0F)?)?|[uDE48-uDE4A]|uDE4B(?:u200D[u2640u2642]uFE0F|uD83C[uDFFB-uDFFF](?:u200D[u2640u2642]uFE0F)?)?|uDE4C(?:uD83C[uDFFB-uDFFF])?|[uDE4DuDE4E](?:u200D[u2640u2642]uFE0F|uD83C[uDFFB-uDFFF](?:u200D[u2640u2642]uFE0F)?)?|uDE4F(?:uD83C[uDFFB-uDFFF])?|[uDE80-uDEA2]|uDEA3(?:u200D[u2640u2642]uFE0F|uD83C[uDFFB-uDFFF](?:u200D[u2640u2642]uFE0F)?)?|[uDEA4-uDEB3]|[uDEB4-uDEB6](?:u200D[u2640u2642]uFE0F|uD83C[uDFFB-uDFFF](?:u200D[u2640u2642]uFE0F)?)?|[uDEB7-uDEBF]|uDEC0(?:uD83C[uDFFB-uDFFF])?|[uDEC1-uDEC5uDECB]|uDECC(?:uD83C[uDFFB-uDFFF])?|[uDECD-uDED2uDED5uDEE0-uDEE5uDEE9uDEEBuDEECuDEF0uDEF3-uDEFAuDFE0-uDFEB])|uD83E(?:[uDD0DuDD0E]|uDD0F(?:uD83C[uDFFB-uDFFF])?|[uDD10-uDD17]|[uDD18-uDD1C](?:uD83C[uDFFB-uDFFF])?|uDD1D|[uDD1EuDD1F](?:uD83C[uDFFB-uDFFF])?|[uDD20-uDD25]|uDD26(?:u200D[u2640u2642]uFE0F|uD83C[uDFFB-uDFFF](?:u200D[u2640u2642]uFE0F)?)?|[uDD27-uDD2F]|[uDD30-uDD36](?:uD83C[uDFFB-uDFFF])?|uDD37(?:u200D[u2640u2642]uFE0F|uD83C[uDFFB-uDFFF](?:u200D[u2640u2642]uFE0F)?)?|[uDD38uDD39](?:u200D[u2640u2642]uFE0F|uD83C[uDFFB-uDFFF](?:u200D[u2640u2642]uFE0F)?)?|uDD3A|uDD3C(?:u200D[u2640u2642]uFE0F)?|[uDD3DuDD3E](?:u200D[u2640u2642]uFE0F|uD83C[uDFFB-uDFFF](?:u200D[u2640u2642]uFE0F)?)?|[uDD3F-uDD45uDD47-uDD71uDD73-uDD76uDD7A-uDDA2uDDA5-uDDAAuDDAE-uDDB4]|[uDDB5uDDB6](?:uD83C[uDFFB-uDFFF])?|uDDB7|[uDDB8uDDB9](?:u200D[u2640u2642]uFE0F|uD83C[uDFFB-uDFFF](?:u200D[u2640u2642]uFE0F)?)?|uDDBA|uDDBB(?:uD83C[uDFFB-uDFFF])?|[uDDBC-uDDCA]|[uDDCD-uDDCF](?:u200D[u2640u2642]uFE0F|uD83C[uDFFB-uDFFF](?:u200D[u2640u2642]uFE0F)?)?|uDDD0|uDDD1(?:u200DuD83EuDD1Du200DuD83EuDDD1|uD83C(?:uDFFB(?:u200DuD83EuDD1Du200DuD83EuDDD1uD83CuDFFB)?|uDFFC(?:u200DuD83EuDD1Du200DuD83EuDDD1uD83C[uDFFBuDFFC])?|uDFFD(?:u200DuD83EuDD1Du200DuD83EuDDD1uD83C[uDFFB-uDFFD])?|uDFFE(?:u200DuD83EuDD1Du200DuD83EuDDD1uD83C[uDFFB-uDFFE])?|uDFFF(?:u200DuD83EuDD1Du200DuD83EuDDD1uD83C[uDFFB-uDFFF])?))?|[uDDD2-uDDD5](?:uD83C[uDFFB-uDFFF])?|uDDD6(?:u200D[u2640u2642]uFE0F|uD83C[uDFFB-uDFFF](?:u200D[u2640u2642]uFE0F)?)?|[uDDD7-uDDDD](?:u200D[u2640u2642]uFE0F|uD83C[uDFFB-uDFFF](?:u200D[u2640u2642]uFE0F)?)?|[uDDDEuDDDF](?:u200D[u2640u2642]uFE0F)?|[uDDE0-uDDFFuDE70-uDE73uDE78-uDE7AuDE80-uDE82uDE90-uDE95])

最新更新