Regex-非典型文件类型的筛选器

Regex-非典型文件类型的筛选器,regex,filenames,Regex,Filenames,我有一个包含纯文本文件的文件夹,文件名的格式如下: 00001.7c53336b37003a9286aba55d2945844c 00002.9c4069e25e1ef370c078db7ee85ff9ac 00003.860e3c3cee1b42ead714c5c874fe25f7 00002.d94f1b97e48ed3b553b3508d116e6a09 00001.7848dde101aa985090474a91ec93fcf0 在以字符串形式获取文件名后,如何对其进行过滤,以便接受所

我有一个包含纯文本文件的文件夹,文件名的格式如下:

00001.7c53336b37003a9286aba55d2945844c
00002.9c4069e25e1ef370c078db7ee85ff9ac
00003.860e3c3cee1b42ead714c5c874fe25f7
00002.d94f1b97e48ed3b553b3508d116e6a09
00001.7848dde101aa985090474a91ec93fcf0
在以字符串形式获取文件名后,如何对其进行过滤,以便接受所有相关文件,而拒绝所有其他文件?

  • 我可以在受控环境中重新格式化所有文件,以剥离 向上串入
    ,然后添加另一个
    和一个常量 文件类型

  • 我可以尝试设置一个可接受的固定长度值
    后面的字符串

  • 我可以排除一些特定的文件类型,希望没有其他问题 通过


所有这些方法都要求我重命名文件,或者以第一人称确认文件夹中没有其他文件。

这些文件都有很长的扩展名。您可以使用以下选项选择扩展名正好为32个字符的文件

\.[^.]{32}$
或者类似的

\.[^.]{8,}$
它匹配扩展名至少为8个字符的文件

仔细观察就会发现(至少)在您的示例中,唯一的字母字符是
A、b、…、f
,因此您可以通过以下方式限制搜索:

\.[0-9a-f]{8,}$
此外,在所有示例中,文件名正好有5位数字,并且以(至少)double
0
开头,我们可以将其合并为:

^0{2}\d{3}\.[0-9a-f]{8,}$

我考虑过这个选项,它似乎是目前为止最好的,但我想知道是否有更严格的条件。似乎有可能(见更新的答案),但我也想知道您的示例有多典型。它们是数千个文件,所有文件的格式都相同。这可能是公平的,我可能不需要严格的过滤就可以通过,但我很想知道是否有这样的选择。谢谢。但我能想到一个小的改进,它需要扩展包含数字——但我记不起在正则表达式中如何做到这一点。也许像这样?[^\s]+.[^\s]+[0-9]+[^\s]+