re.compile为匹配字符串粘贴多个模式



我必须在文本中搜索多个字符串。是否可以在一个编译语句中搜索多个模式。

text_data = """Errors err:
               err
               Error"""
comp = re.compile('Error err') #
comp.search(text_data)

一种选择是以以下方式创建列表,但在我的情况下,text_data是一个巨大的文件,我必须重复多次。

regexes = [ re.compile(p) for p in [ 'Error',
                                     'err',
                                     'Error err'
                                     ]
            ]
for regex in regexes:
    if regex.search(text_text_data):
        print 'found a match!'

您可以在正则表达式中使用管道(|)来组合多个表达式,在给定的点上只需要一个匹配。例如,A|B将与AB相匹配。

您也可以在不捕获组的情况下执行此操作,因此例如A(B|C)D将匹配ABDACD

在您的情况下,您可以简单地将三个部分组合为以下表达式:

Error|err|Error err

示例:

>>> r = re.compile('Error|Error err|err')
>>> r.findall(text_data)
['Error', 'err', 'err', 'Error']

(请记住,re.search只会给您找到的第一个匹配项,所以我在这里使用re.findall)。

最新更新