2017-05-05 122 views
0

我想匹配一個字符串,如果它完全匹配,而忽略大小寫。以下是我的字符串值不同但仍匹配的代碼。蟒蛇重新確切匹配數字和字符串

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 = 999 , v = 99但匹配和匹配k = AAA, v = aa。我確切需要的是如果k= 999v = 999然後匹配其他所有情況下不應該匹配。如明智k = AAAv = aaA應該匹配(意味着忽略的情況下)如果k =AAAv = aa不應匹配。

+0

爲什麼要使用正則表達式呢?一個簡單的比較會給你你需要的東西:'if v == k:'。 –

+0

我需要忽略大小寫,我也會比較字符串 – asteroid4u

+0

因此,您不僅僅是要使用數據,如在您的答案? –

回答

3

您的意思是...... if k == v:

+0

我需要忽略大小寫,我也會比較字符串 – asteroid4u

2

不知道爲什麼你需要RegEx,但是無論出於何種原因,ypou都可以使用字符串的開始和字符串的結尾進行匹配。

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