正则表达式以匹配python中设置的rar存档文件中的第一个文件

发布于 2021-01-29 15:04:46

我需要解压缩目录中的所有文件,为此,我需要找到集合中的第一个文件。我目前正在使用一堆if语句和循环来执行此操作。我可以使用正则表达式来做到这一点吗?

这是我需要匹配的文件列表:

yes.rar
yes.part1.rar
yes.part01.rar
yes.part001.rar
yes.r01
yes.r001

这些不应该匹配:

no.part2.rar
no.part02.rar
no.part002.rar
no.part011.rar
no.r002
no.r02

我在线程上找到了一个类似的正则表达式,但是Python似乎不支持可变长度查找。单行正则表达式会很复杂,但是我会很好地记录下来,这不是问题。这只是您要解决的问题之一。

在此先感谢大家。

:)

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

    无需为此使用后视断言。由于您从字符串的开头开始查找,因此您可以使用先行查找和后备查找来完成所有操作。这应该工作:

    ^((?!\.part(?!0*1\.rar$)\d+\.rar$).)*\.(?:rar|r?0*1)$
    

    要按照您的要求捕获文件名的第一部分,可以执行以下操作:

    ^((?:(?!\.part\d+\.rar$).)*)\.(?:(?:part0*1\.)?rar|r?0*1)$
    


知识点
面圈网VIP题库

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

去下载看看