UCS-2ビルドでは、Pythonは \ U0000ffff
上のUnicode文字ごとに内部で2つのコードユニットを使用します コードポイント。正規表現はそれらと連携する必要があるため、これらに一致させるには次の正規表現を使用する必要があります。
highpoints = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')
この正規表現は、UTF-16サロゲートペアでエンコードされたすべてのコードポイントに一致します(UTF-16コードポイントU+10000からU+10FFFF 。
これをPythonUCS-2バージョンとUCS-4バージョン間で互換性を持たせるには、 try:
を使用できます。 /例外コード> どちらか一方を使用するには:
try:
highpoints = re.compile(u'[\U00010000-\U0010ffff]')
except re.error:
# UCS-2 build
highpoints = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')
UCS-2 pythonビルドのデモンストレーション:
>>> 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: '