正则表达式作为列表项

时间:2018-07-31 17:00:31

标签: python regex python-2.7

我有一长串正则表达式,我将它们导入列表中。当我尝试使用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

1 个答案:

答案 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