我需要解压缩目录中的所有文件,为此,我需要找到集合中的第一个文件。我目前正在使用一堆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似乎不支持可变长度查找。单行正则表达式会很复杂,但是我会很好地记录下来,这不是问题。这只是您要解决的问题之一。
在此先感谢大家。
:)
无需为此使用后视断言。由于您从字符串的开头开始查找,因此您可以使用先行查找和后备查找来完成所有操作。这应该工作:
^((?!\.part(?!0*1\.rar$)\d+\.rar$).)*\.(?:rar|r?0*1)$
要按照您的要求捕获文件名的第一部分,可以执行以下操作:
^((?:(?!\.part\d+\.rar$).)*)\.(?:(?:part0*1\.)?rar|r?0*1)$