Поскольку существует много смайликов with different unicode values, вы должны явно указать их в регулярном выражении, или если они находятся в диапазоне spesific вы можете использовать класс символов. В этом случае ваш второй Simbol не является стандартным смайликов, это просто юникода характер, но так как это больше, чем \u263a
(Юникод представительство ☺️), вы можете поместить его в диапазоне с \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 ']
Or если вы хотите, чтобы соответствовать более emojies вы можете использовать диапазон символов (здесь хорошая ссылка, которая показывает вам правильный выбор для различных emojies 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 ']
Вы должны проверить этот стек, чтобы получить регулярное выражение для смайликов http://stackoverflow.com/q/28077049/4639336 – reticentroot
@reticentroot Я не думаю, что он будет работать для смайликов utf8 типа "". – Delgan
@reticentroot Мне нужно это для работы с unicode смайликами. – LeDerp