带有unicode(日语)字符问题的正则表达式python

Pau*_*mas 5 python regex unicode

我想删除下面的一部分字符串(以粗体显示),这是存储在字符串oldString中

[DMSM-8433] 加护亜依 Kago Ai - 加护亜依vs.星期五

我在python中使用以下正则表达式

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

当我输出newString时,没有删除任何内容

Wik*_*żew 6

您可以使用以下代码段解决问题:

#!/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")
Run Code Online (Sandbox Code Playgroud)

IDEONE演示

除了# -*- coding: utf-8 -*-声明,我还添加了@nhahtdh的字符类来检测日语符号

请注意,由于match 需要“提醒” Python 2,因此需要“手动”将其编码为UTF-8字符串,我们一直都在使用Unicode。