Unicode正则表达式匹配汉字的字符类

时间:2015-06-16 02:09:14

标签: python regex python-2.7 unicode encoding

^[一二三四五六七]、一、

不符

^一、匹配一、

我指定汉字字符类的方式是错误的吗?

我从文件中读取正则表达式。

2 个答案:

答案 0 :(得分:3)

适合我,

>>> import re
>>> re.match(u'^[一二三四五六七]、', u'一、')
<_sre.SRE_Match object; span=(0, 2), match='一、'>
>>> re.match(u'^[一二三四五六七]、', u'一、').group(0)
'一、'

我认为您未能将正则表达式定义为unicode字符串。

在python3中,它将是

# -*- coding: utf-8 -*-

import re

with open('file') as f:
    reg = f.read().strip()
    print(re.match(reg, u'一、').group(0))

答案 1 :(得分:1)

您需要确保使用正确的编码读取文件:

with open('my-regex-file', encoding='utf-8') as f:
    regex = re.compile(f.read())
with open('my-text-file', encoding='utf-8') as f:
    text = f.read()
if regex.match(text):
    print("It's a match!")