我正在尝试一些Python(2.7.3)正则表达式,我遇到了这种我没想到的行为。在这个代码块中,当检查“ß”字符以及“Å”,“Í”等其他重音字符时,以下内容将返回False
。
除了为“ø”字符返回False
之外,它还会返回False
以及其他重音字符,例如“å”,“Å”,“ç”,“Ç”, “”等等。
案例和观点,我不确定在处理重音字符与其他字符(例如“¥”)时问题出在哪里,它没有问题。它们都有不同的unicode / utf-8值(这就是我的编码设置),所以我不确定它的区别在哪里。
def regex_check(name)
pattern = '[^ß]'
if re.match(pattern, str(name), re.IGNORECASE):
return True
else:
return False
print regex_check("ø")
我错过了一些明显的东西吗?谢谢您的帮助。
答案 0 :(得分:3)
普通字符串是Python 2中的字节,您应该使用u'...'
前缀将它们视为unicode字符串。
# -*- coding: utf-8 -*-
import re
def regex_check(name):
pattern = u'[^ß]' #use u'...' here
if re.match(pattern, name , re.IGNORECASE):
return True
else:
return False
print regex_check(u"ø") #use u'...' here
<强>输出:强>
True