在pythonregex中匹配Unicode表情符号 [英] Match unicode emoji in python regex

查看:0
本文介绍了在pythonregex中匹配Unicode表情符号的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要提取文本中数字和表情符号之间的文本

示例文本:

blah xzuyguhbc ibcbb bqw 2 extract1  ☺️ jbjhcb 6 extract2 🙅 bjvcvvv

输出:

extract1
extract2

我编写的regex代码提取两个数字之间的文本,我需要更改它标识Unicode表情符号字符的部分,并提取它们之间的文本。

(?<=[s][d])(.*?)(?=[d])

请推荐一种Python友好的方法,我需要它来处理所有的表情符号,而不仅仅是例子中给出的表情符号

https://regex101.com/r/uT1fM0/1

推荐答案

因为有很多emojiwith different unicode values,您必须在您的正则表达式中显式指定它们,或者如果它们具有特定的范围,您可以使用Character类。在本例中,您的第二个Simbol不是标准的emoji表情符号,它只是一个unicode字符,但由于它大于u263a(☺️的unicode表示形式),您可以使用u263a

将其放入一个范围内
In [71]: s = 'blah xzuyguhbc ibcbb bqw 2 extract1  ☺️ jbjhcb 6 extract2 🙅 bjvcvvv'

In [72]: regex = re.compile(r'd+(.*?)(?:u263a|U0001f645)')

In [74]: regex.findall(s)
Out[74]: [' extract1  ', ' extract2 ']

或者,如果您想匹配更多的emoji表情,您可以使用字符范围(这里有一个很好的参考,它向您展示了不同emoji表情的适当范围http://apps.timwhitlock.info/emoji/tables/unicode):

In [75]: regex = re.compile(r'd+(.*?)[u263a-U0001f645]')

In [76]: regex.findall(s)
Out[76]: [' extract1  ', ' extract2 ']

请注意,在第二种情况下,您必须确保上述范围内的所有字符都是您想要的表情符号。

这里是另一个例子:

In [77]: s = "blah 4 xzuyguhbc 😺 ibcbb bqw 2 extract1  ☺️ jbjhcb 6 extract2 🙅 bjvcvvv"

In [78]: regex = re.compile(r'd+(.*?)[u263a-U0001f645]')

In [79]: regex.findall(s)
Out[79]: [' xzuyguhbc ', ' extract1  ', ' extract2 ']

这篇关于在pythonregex中匹配Unicode表情符号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆