我有一长串正则表达式,我将它们导入列表中。当我尝试使用re.search
中的列表项时,没有任何匹配项。但是,当我在re.search
中手动输入相同的表达式时,会得到匹配。任何想法可能导致此问题的原因
测试字符串\windows\temp\zzz.rar
测试正则表达式(temp|tmp)\\[a-z]+\.rar
这不起作用:
for key, value in data.items():
for expr in expressions:
matchStr = re.search(r'expr', key, re.I)
if matchStr:
print 'Match found'
break
这有效:
for key, value in data.items():
for expr in expressions:
matchStr = re.search(r'(temp|tmp)\\[a-z]+\.rar', key, re.I)
if matchStr:
print 'Match found'
break
答案 0 :(得分:2)
您不是在使用表达式列表中的表达式,而只是使用字符串r'expr'
直接使用expr,不带引号,例如re.search(expr, key, re.I)
:
import re
data = {r'\windows\temp\zzz.rar': 'xxx'}
expressions = [r'(temp|tmp)\\[a-z]+\.rar']
for key, value in data.items():
for expr in expressions:
matchStr = re.search(expr, key, re.I)
if matchStr:
print('Match found')
break
打印:
Match found