2017-05-05 124 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