带unicode(日语)字符issu的regex python

2024-09-24 08:38:49 发布

您现在位置:Python中文网/ 问答频道 /正文

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

【DMSM-8433】卡哥Ai–卡哥与周五

我在python中使用以下regex

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

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


Tags: 字符串re内容unicodeairegexcompileza
2条回答

我认为您应该使用这样的正则表达式:

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

另请参考this documentation.

编辑: 我还测试了它here。在

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

#!/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")

IDEONE demo

除了# -*- coding: utf-8 -*-声明之外,我还添加了@nhahtdh's character class to detect Japanese symbols。在

注意,match需要“手动”编码为UTF-8字符串,因为python2需要“提醒”我们一直在使用Unicode。在

相关问题 更多 >