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位数字,并且以(至少)double0
开头,我们可以将其合并为:
^0{2}\d{3}\.[0-9a-f]{8,}$
我考虑过这个选项,它似乎是目前为止最好的,但我想知道是否有更严格的条件。似乎有可能(见更新的答案),但我也想知道您的示例有多典型。它们是数千个文件,所有文件的格式都相同。这可能是公平的,我可能不需要严格的过滤就可以通过,但我很想知道是否有这样的选择。谢谢。但我能想到一个小的改进,它需要扩展包含数字——但我记不起在正则表达式中如何做到这一点。也许像这样?[^\s]+.[^\s]+[0-9]+[^\s]+