Dalam build UCS-2, python menggunakan 2 unit kode secara internal untuk setiap karakter unicode melalui \U0000ffff
titik kode. Ekspresi reguler perlu bekerja dengan itu, jadi Anda harus menggunakan ekspresi reguler berikut untuk mencocokkan ini:
highpoints = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')
Ekspresi reguler ini cocok dengan titik kode apa pun yang dikodekan dengan pasangan pengganti UTF-16 (lihat Kode UTF-16 menunjukkan U+10000 ke U+10FFFF .
Untuk membuat ini kompatibel di seluruh versi Python UCS-2 dan UCS-4, Anda dapat menggunakan try:
/except
untuk menggunakan satu atau yang lain:
try:
highpoints = re.compile(u'[\U00010000-\U0010ffff]')
except re.error:
# UCS-2 build
highpoints = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')
Demonstrasi pada build 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: '