我正在尝试一些 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("ø")
我是否遗漏了一些明显的东西?谢谢您的帮助。
最佳答案
普通字符串在 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
关于Python 正则表达式带有重音字符的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18676268/