我有以下幾點:的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僅僅是匹配的字符串,如何我也匹配之間的子串的開始。
我有以下幾點:的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僅僅是匹配的字符串,如何我也匹配之間的子串的開始。
您可以使用re.search
而不是re.match
。
這似乎也並不需要正則表達式。你的正則表達式123.35
可能不符合你的期望,因爲這個點匹配任何東西。
如果是這種情況,那麼你可以使用x in s
做簡單的字符串遏制。
使用re.search
或if l in temp:
注意只需使用:內置list
型不應該被隱藏,所以for l in lists:
更好
我不得不同意簡單的子串匹配'in'比re.search要容易得多。 – fantabolous 2014-07-29 03:26:38
可以使用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
我不知道這是不是一個編譯的正規表達式更快。
是的,你的實際速度是5秒,+1 – YOU 2010-04-23 07:32:30