W kompilacji UCS-2 python używa wewnętrznie 2 jednostek kodu dla każdego znaku Unicode w \U0000ffff
punkt kodowy. Wyrażenia regularne muszą z nimi współpracować, więc aby je dopasować, musisz użyć następującego wyrażenia regularnego:
highpoints = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')
To wyrażenie regularne pasuje do dowolnego punktu kodowego zakodowanego za pomocą pary zastępczej UTF-16 (patrz UTF-16 Punkty kodowe U+10000 do U+10FFFF .
Aby uczynić to kompatybilnym w wersjach Pythona UCS-2 i UCS-4, możesz użyć try:
/except
użyć jednego lub drugiego:
try:
highpoints = re.compile(u'[\U00010000-\U0010ffff]')
except re.error:
# UCS-2 build
highpoints = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')
Demonstracja na kompilacji Pythona 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: '