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