En una compilación UCS-2, python usa 2 unidades de código internamente para cada carácter Unicode sobre el \U0000ffff
punto de código Las expresiones regulares deben funcionar con ellos, por lo que deberá usar la siguiente expresión regular para que coincida con estos:
highpoints = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')
Esta expresión regular coincide con cualquier punto de código codificado con un par sustituto UTF-16 (ver UTF-16 Puntos de código U+10000 a U+10FFFF .
Para que esto sea compatible con las versiones UCS-2 y UCS-4 de Python, puede utilizar try:
/except
usar uno u otro:
try:
highpoints = re.compile(u'[\U00010000-\U0010ffff]')
except re.error:
# UCS-2 build
highpoints = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')
Demostración en una compilación de python UCS-2:
>>> import re
>>> highpoints = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')
>>> example = u'Some example text with a sleepy face: \U0001f62a'
>>> highpoints.sub(u'', example)
u'Some example text with a sleepy face: '