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í .