I en UCS-2-build använder python 2 kodenheter internt för varje unicode-tecken över \U0000ffff
kodpunkt. Reguljära uttryck måste fungera med dessa, så du måste använda följande reguljära uttryck för att matcha dessa:
highpoints = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')
Detta reguljära uttryck matchar vilken kodpunkt som helst som är kodad med ett UTF-16 surrogatpar (se UTF-16 Kodpunkter U+10000 till U+10FFFF .
För att göra detta kompatibelt med Python UCS-2 och UCS-4 versioner kan du använda ett try:
/except
att använda det ena eller det andra:
try:
highpoints = re.compile(u'[\U00010000-\U0010ffff]')
except re.error:
# UCS-2 build
highpoints = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')
Demonstration på ett UCS-2 pythonbygge:
>>> 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: '