Python regex con problema de caracteres Unicode (japonés)

Quiero eliminar parte de una cadena (que se muestra en negrita) a continuación, esto se almacena en la cadena oldString

[DMSM-8433] 加 護 加 依 Kago Ai – 加 護 亜 亜 FR vs. VIERNES

Estoy usando el siguiente regex dentro de python

p=re.compile(ur"( [\W]+) (?=[A-Za-z ]+–)", re.UNICODE) newString=p.sub("", oldString) 

cuando salgo el newString nada se ha eliminado

Puede utilizar el siguiente fragmento de código para resolver el problema:

 #!/usr/bin/python # -*- coding: utf-8 -*- import re str = u'[DMSM-8433] 加護亜依 Kago Ai – 加護亜依 vs. FRIDAY' regex = u'[\u3000-\u303f\u3040-\u309f\u30a0-\u30ff\uff00-\uff9f\u4e00-\u9faf\u3400-\u4dbf]+ (?=[A-Za-z ]+–)' p = re.compile(regex, re.U) match = p.sub("", str) print match.encode("UTF-8") 

Ver la demo de IDEONE.

Junto a # -*- coding: utf-8 -*- statement, he añadido la clase de caracteres de @ nhahtdh para detectar símbolos japoneses .

Tenga en cuenta que la match debe codificarse como cadena UTF-8 “manualmente”, ya que Python 2 debe ser “recordado”, estamos trabajando con Unicode todo el tiempo.

Creo que deberías usar una expresión regular como esta:

 ([\p{Hiragana}\p{Katakana}\p{Han}]+) 

Consulte también esta documentación.

EDITAR: También lo he probado aquí .