我有以下内容:
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只匹配字符串的开头,如何在中间匹配子字符串。
答案 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)
您可以使用map
和any
进行稍微复杂的检查。
>>> 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>