In een UCS-2-build gebruikt python intern 2 code-eenheden voor elk unicode-teken over de \U0000ffff
code punt. Reguliere expressies moeten hiermee werken, dus je moet de volgende reguliere expressie gebruiken om deze te matchen:
highpoints = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')
Deze reguliere expressie komt overeen met elk codepunt dat is gecodeerd met een UTF-16-surrogaatpaar (zie UTF-16-code wijst U+10000 tot U+10FFFF .
Om dit compatibel te maken met Python UCS-2 en UCS-4 versies, zou je een try:
. kunnen gebruiken /except
om de een of de ander te gebruiken:
try:
highpoints = re.compile(u'[\U00010000-\U0010ffff]')
except re.error:
# UCS-2 build
highpoints = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')
Demonstratie op een 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: '