При изграждане на UCS-2, python използва 2 кодови единици вътрешно за всеки уникод символ през \U0000ffff
кодова точка. Регулярните изрази трябва да работят с тях, така че ще трябва да използвате следния регулярен израз, за да ги съпоставите:
highpoints = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')
Този регулярен израз съответства на всяка кодова точка, кодирана с UTF-16 сурогатна двойка (вижте UTF-16 Кодови точки U+10000 до U+10FFFF .
За да направите това съвместимо между версиите на Python UCS-2 и UCS-4, можете да използвате try:
/except
за да използвате едното или другото:
try:
highpoints = re.compile(u'[\U00010000-\U0010ffff]')
except re.error:
# UCS-2 build
highpoints = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')
Демонстрация на UCS-2 python build:
>>> 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: '