- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个正则表达式来检测表情符号:
emoji = u'(\ud83c[\udf00-\udfff]|\ud83d[\udc00-\ude4f\ude80-\udeff]|[\u2600-\u26FF\u2700-\u27BF])'
我用这个命令测试:re.match(emoji, u'\U0001f602', re.UNICODE) # "😂"
问题是,如果在我的 macOs 机器上找到匹配项,但在 Linux Debian 上不
使用来自 conda 发行版的 ipython 4.0.1 和 Python 2.7.11。
为什么在 Linux 上匹配问题?
最佳答案
您的 Mac 操作系统有一个 narrow python build .试试这个:
unichr(0x0001f602)
我希望你会得到一个异常(exception)。这意味着您的 Mac python 安装将 FFFF 以上的 unicode 字符视为两个字符。
>>> u'\ud83d\ude02'.encode('utf8')
'\xf0\x9f\x98\x82'
>>> u'\U0001f602'.encode('utf8')
'\xf0\x9f\x98\x82'
>>> re.match(emoji, u'\ud83d\ude02', re.UNICODE)
<_sre.SRE_Match object at 0x7fdf7405d6c0>
注意\ud83d\ude02 和\U0001f602 如何产生相同的字节。您的 Mac 操作系统将字符\U0001f602 视为两个 8 位十六进制数字\ud83d\ude02,这与您的正则表达式匹配。 Linux 将其视为单个 16 位十六进制数字,与您的正则表达式中的任何范围都不匹配。
您的选择是:1) 在 Linux 下将以下字符范围添加到您的正则表达式中:
你的'[\U0001F600-\U0001F64F]'
但它会破坏 Mac OS 下的正则表达式,根据 here.
2) 切换到 Python 3。
3) 使用 --enable-unicode=ucs4 选项在 Mac 上重建你的 python。
关于python - 在 Linux 中使用 python 正则表达式未检测到表情符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34679514/
我遇到了 Handlebars 表达式 {{!< default}}我不明白。在问这个问题之前,我曾尝试在谷歌上搜索答案。但是,我找不到任何答案。谁能解释一下这个表达式是什么意思? 最佳答案 在 Ha
经常有朋友问起,如何在im即时通讯中实现发送图片、视频、语音和表情? 为此,小编特意写了一个vue版本的demo,实现了图片视频文件和表情的的发送,参考这个demo源代码,相信你就可以轻松的用un
这里是一个网站 ( https://twitchemotes.com/apidocs ),它展示了一个用于获取 twitch 表情的 API(基本上是描述属于不同用户的一组图像的 json)。 API
使用 Python 3,像下面这样的简单脚本应该按预期运行,但似乎会因 unicode 表情字符串而窒息: import re phrase = "(╯°□°)╯ ︵ ┻━┻" pattern = r
我试图弄清楚表情符号(表情)选择是如何在 Facebook 应用和 Google Hangouts 应用上实现的。我查看了 Android API 示例中的 SoftKeyboard 演示应用程序,但
我正在尝试在 android 通知文本中显示笑脸(或图像范围)。它不起作用。有人知道怎么做吗?谢谢。 代码如下: SpannableStringBuilder builder = new Spanna
我是一名优秀的程序员,十分优秀!