2010-04-23 164 views
8

我有以下幾點:的Python:列表和字符串匹配

temp = "[email protected]+" 

lists = ["abc", "123.35", "xyz", "AND+"] 

for list in lists 
    if re.match(list, temp, re.I): 
    print "The %s is within %s." % (list,temp) 

的re.match僅僅是匹配的字符串,如何我也匹配之間的子串的開始。

回答

14

您可以使用re.search而不是re.match

這似乎也並不需要正則表達式。你的正則表達式123.35可能不符合你的期望,因爲這個點匹配任何東西。

如果是這種情況,那麼你可以使用x in s做簡單的字符串遏制。

+0

是的,你的實際速度是5秒,+1 – YOU 2010-04-23 07:32:30

12

使用re.searchif l in temp:

注意只需使用:內置list型不應該被隱藏,所以for l in lists:更好

+0

我不得不同意簡單的子串匹配'in'比re.search要容易得多。 – fantabolous 2014-07-29 03:26:38

0

可以使用map一個稍微更復雜的檢查做到這一點, any

>>> temp = "[email protected]+" 
>>> lists = ["abc", "123.35", "xyz", "AND+"] 
>>> any(map(lambda match: match in temp, lists)) 
True 
>>> temp = 'fhgwghads' 
>>> any(map(lambda match: match in temp, lists)) 
False 

我不知道這是不是一個編譯的正規表達式更快。