Python:列表和字符串匹配

时间:2010-04-23 07:26:07

标签: python match

我有以下内容:

temp = "aaaab123xyz@+"

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只匹配字符串的开头,如何在中间匹配子字符串。

3 个答案:

答案 0 :(得分:14)

您可以使用re.search代替re.match

这似乎你真的不需要正则表达式。你的正则表达式123.35可能没有达到预期效果,因为点匹配任何东西。

如果是这种情况,那么您可以使用x in s进行简单的字符串遏制。

答案 1 :(得分:12)

使用re.search或仅在if l in temp:

中使用

注意:内置类型list不应为阴影,因此for l in lists:更好

答案 2 :(得分:0)

您可以使用mapany进行稍微复杂的检查。

>>> temp = "aaaab123xyz@+"
>>> 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

我不确定这是否比编译的正则表达式更快。<​​/ p>