正则表达式匹配Python中的rar存档文件集中的第一个文件

Mri*_*lla 2 python regex

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

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

yes.rar
yes.part1.rar
yes.part01.rar
yes.part001.rar
yes.r01
yes.r001
Run Code Online (Sandbox Code Playgroud)

这些不应该匹配:

no.part2.rar
no.part02.rar
no.part002.rar
no.part011.rar
no.r002
no.r02
Run Code Online (Sandbox Code Playgroud)

我在这个帖子上发现了一个类似的正则表达式,但似乎Python不支持可变长度的外观.单行正则表达式会很复杂,但我会很好地记录它,这不是问题.这只是你击败堆积的问题之一.

先谢谢你们.

:)

Wel*_*bog 5

不要依赖文件的名称来确定哪个是第一个.你最终会找到一个边缘情况,你得到错误的文件.

RAR的标题将告诉您哪个文件是卷中的第一个文件,假设它们是在最新版本的RAR中创建的.

HEAD_FLAGS位标志:
2个字节

0x0100 - 第一个卷(仅由RAR 3.0及更高版本设置)

因此,打开每个文件并检查RAR标头,专门查找指示哪个文件是第一个卷的标志.只要存档没有损坏,这将永远不会失败.


更新:我刚刚通过查看十六进制编辑器中的某些生成存档来确认这一点.文件头的构造与上面指示的链接完全相同.这只是打开文件并读取该标志的标题.带有该标志的文件是第一个卷.