如何在Python的正则表达式中表示一组非ascii字符?

时间:2016-09-06 01:09:08

标签: python regex

在Python的正则表达式中,我发现[一三四五六七八九十]与括号中的任何字符都不匹配。但是将完全匹配,并且类似于括号中的任何其他字符。如何正确指定正则表达式以匹配[一三四五六七八九十]括号中的任何字符?感谢。

1 个答案:

答案 0 :(得分:2)

Python 3 中,这似乎工作正常,可能是因为默认情况下 Python 3 中的字符串是 Unicode

以下代码返回

#!/usr/bin/env python3

import re

m = re.match("[一三四五六七八九十]", "一");

print(m.group(0))

但是,如果我在Python 2中运行它,我会收到错误:

  

SyntaxError:文件./re_multibyte.py中的非ASCII字符'\ xe4'   第5行,但没有声明编码;看到   http://python.org/dev/peps/pep-0263/了解详情

因此对于 Python 2 ,您需要指定 UTF-8 作为源编码,并指定字符串是unicode(通过u像这样的前缀),也得到

的匹配
#!/usr/bin/env python2
# encoding: UTF-8

import re

m = re.match(u"[一三四五六七八九十]", u"一");

print(m.group(0))