Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何在Google工作表中拆分包含标志的表情符号,而不将标志拆分为2个字符_Regex_Google Sheets_Formulas - Fatal编程技术网

Regex 如何在Google工作表中拆分包含标志的表情符号,而不将标志拆分为2个字符

Regex 如何在Google工作表中拆分包含标志的表情符号,而不将标志拆分为2个字符,regex,google-sheets,formulas,Regex,Google Sheets,Formulas,这是我的初始字符串: 简短回答 要正确区分这三个表情,我们需要使用。幸运的是,有一些JavaScript库可以用于类似于由to共享的 解释 OP公式返回四个元素而不是三个元素,因为Google Sheets内置函数需要四个“字符”(实际上它们是代码点),需要四个以上的十六进制数字来表示它们。代表表情符号的每一组“字符”称为“星体密码点” 从 星体代码点很容易识别:如果你需要4个以上的十六进制数字来表示代码点,它就是星体代码点 在内部,JavaScript[以及Google Sheets内置函数

这是我的初始字符串: 简短回答 要正确区分这三个表情,我们需要使用。幸运的是,有一些JavaScript库可以用于类似于由to共享的

解释 OP公式返回四个元素而不是三个元素,因为Google Sheets内置函数需要四个“字符”(实际上它们是代码点),需要四个以上的十六进制数字来表示它们。代表表情符号的每一组“字符”称为“星体密码点”

星体代码点很容易识别:如果你需要4个以上的十六进制数字来表示代码点,它就是星体代码点


在内部,JavaScript[以及Google Sheets内置函数]表示星体符号,如和。如果只使用ECMAScript 5兼容的转义序列来表示符号,您将看到每个星体符号都需要两个转义。这是令人困惑的,因为人类通常用Unicode符号或字母来代替

自定义函数
注意:在Windows中,表情符号(这是JS ES5正则表达式语法中的一个问题。您需要使用
(?:[\0-\t\x0B\f\x0E-\u2027\u202A-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uDC00-\uDBFF](?![\uDC00-\uDFFF-\uDFFF])(?![\uDC00-\uDFFF-\uDFFF])(?![\uDC00-\uDFFF])(?:[\uDC00-\uDFFF>)也不能使用uDC00-\uDFFF>)
在模式的末尾,它将不匹配任何内容。@WiktorStribiżew:实际上,问题与在Google工作表中实现有关,但解决方案需要使用JavaScript。 function SPLITGRAPHEMES(string) { var splitter = new GraphemeSplitter(); return splitter.splitGraphemes(string); }
=TRANSPOSE(SPLITGRAPHEMES(A1))