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 に答える