1

我正在尝试一些 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("ø") 

我错过了一些明显的东西吗?谢谢您的帮助。

4

1 回答 1

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
于 2013-09-07T18:00:16.337 回答