2017-05-05 14 views
0

大文字と小文字を区別しないで文字列と完全に一致する場合は一致させようとしています。以下は私の文字列の値が異なるがまだ一致しているコードです。上記のコードk = 999 , v = 99が、マッチング及びk = AAA, v = aaマッチングにおいて正確に一致する数字と文字列のためのPython re

import re 
k = "999" 
v = "99" 
if (re.search(v, k , re.IGNORECASE)): 
    print "xyz" 
k = "AAA" 
v = "aa" 
if (re.search(v, k , re.IGNORECASE)): 
    print "xyz" 

。私が正確に必要としているのは、k= 999v = 999が一致し、他のすべての場合が一致してはならない場合です。 k =AAAv = aaが一致しない場合は、k = AAAv = aaAのように一致する必要があります(意味無視の場合)。

+0

は、なぜあなたはすべてで正規表現を使用していますか?簡単な比較によって、必要なものが得られます: 'if v == k:'。 –

+0

私は大文字小文字を無視する必要があります、私はまた文字列を比較します – asteroid4u

+0

あなただけではなく、あなたの答えのようなデータを使用するつもりですか? –

答えて

3

..... if k == v:を意味しましたか?

+0

私は大文字小文字を無視する必要があります、私も文字列を比較します – asteroid4u

2

RegExが必要な理由はわかりませんが、何らかの理由であれば、ypouはstart of stringとstringの終わりを使用して一致させることができます。

k = re.compile(r"^99$") 
+0

私は大文字小文字を無視する必要があります、私も文字列を比較する – asteroid4u

1

鈍感に比較ケースを実行する正規の方法は使用することであるlower()又はupper()

コード:

def matches(str1, str2): 
    return 'matches' if str1.lower() == str2.lower() else 'does not match' 

テストコード:

data = (
    ("999", "99"), 
    ("999", "999"), 
    ("999X", "999x"), 
    ("999Xx", "999x"), 
) 

def matches(str1, str2): 
    return 'matches' if str1.lower() == str2.lower() else 'does not match' 

for datum in data: 
    print('%s %s %s' % (datum[0], matches(*datum), datum[1])) 

結果:

999 does not match 99 
999 matches 999 
999X matches 999x 
999Xx does not match 999x