Trong bản dựng UCS-2, python sử dụng 2 đơn vị mã bên trong cho mỗi ký tự unicode qua \U0000ffff
điểm mã. Biểu thức chính quy cần hoạt động với những biểu thức đó, vì vậy bạn cần sử dụng biểu thức chính quy sau để đối sánh với những biểu thức này:
highpoints = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')
Biểu thức chính quy này khớp với bất kỳ điểm mã nào được mã hóa bằng cặp thay thế UTF-16 (xem Mã UTF-16 điểm U + 10000 đến U + 10FFFF .
Để làm cho điều này tương thích trên các phiên bản Python UCS-2 và UCS-4, bạn có thể sử dụng try:
/ except
để sử dụng cái này hay cái kia:
try:
highpoints = re.compile(u'[\U00010000-\U0010ffff]')
except re.error:
# UCS-2 build
highpoints = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')
Trình diễn trên bản dựng 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: '