我需要解压缩一个目录中的所有文件,为此我需要找到集合中的第一个文件。我目前正在使用一系列if语句和循环来完成这项工作。我能用regex来做这个吗?
以下是我需要匹配的文件列表:

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

我在this线程上发现了类似的regex,但Python似乎不支持可变长度lookarounds。一行regex会很复杂,但我会很好地记录它,这不是问题。这只是其中一个问题,你打你的堆,结束。
提前谢谢你们。
:)

最佳答案

没有必要使用look behind断言来实现这一点。既然你是从线的开头开始看的,你就可以用look aheads做任何事情,也可以用look behinds做任何事情。这应该有效:

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

要按要求捕获文件名的第一部分,可以执行以下操作:
^((?:(?!\.part\d+\.rar$).)*)\.(?:(?:part0*1\.)?rar|r?0*1)$

关于python - 正则表达式以匹配Python中设置的rar存档文件中的第一个文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2537882/

10-12 23:05