使用Python将一行与多个正则表达式匹配

发布于 2021-01-29 15:07:06

有没有办法查看一行是否包含与一组正则表达式模式匹配的单词?如果我有[regex1, regex2, regex3],并且想查看某行是否与其中任何一条匹配,我该怎么做?现在,我正在使用re.findall(regex1, line),但一次只能匹配1个正则表达式。

关注者
0
被浏览
84
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您可以使用内置函数any(或all如果所有正则表达式必须匹配)和生成器表达式来遍历所有正则对象。

    any (regex.match(line) for regex in [regex1, regex2, regex3])

    (或者any(re.match(regex_str, line) for regex in [regex_str1, regex_str2, regex_str2]),当然,如果正则表达式不是预编译的正则表达式对象)

    尽管与将正则表达式合并到单个表达式中相比,这是不够的-
    如果此代码对时间或CPU至关重要,则应改用包含所有需求的单个正则表达式,使用特殊的|regex运算符将原始表达式分开。组合所有正则表达式的简单方法是使用字符串“
    join”运算符:

    re.match("|".join([regex_str1, regex_str2, regex_str2]) , line)

    尽管如果原始正则表达式确实使用了|运算符,则在此格式上组合正则表达式可能会导致错误的表达式。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看