【发布时间】:2021-04-07 14:32:40
【问题描述】:
我有一个文件夹需要包含某些名称中包含魔法的文件 所以我有一个包含 os.listdir(sstable_dir_path) 的所有文件的列表,并且我有一个正则表达式列表,其中一个应该与其中一个文件名匹配。 没有嵌套的 for 有什么办法吗?
SSTABLE_FILENAMES_REGEXES = [re.compile(r'md-\d+-big-CompressionInfo.db'), re.compile(r'md-\d+-big-Data.db'),
re.compile(r'md-\d+-big-Digest.crc32'), re.compile(r'md-\d+-big-Filter.db'),
re.compile(r'md-\d+-big-Index.db'), re.compile(r'md-\d+-big-Statistics.db'),
re.compile(r'md-\d+-big-Summary.db'), re.compile(r'md-\d+-big-TOC.txt')]
文件名示例:
md-146-big-CompressionInfo.db
md-146-big-Data.db
md-146-big-Digest.crc32
md-146-big-Filter.db
md-146-big-Index.db
md-146-big-Statistics.db
md-146-big-Summary.db
md-146-big-TOC.txt
我现在是怎么做的
all([any([regex.fullmatch(fillename) for regex in SSTABLE_FILENAMES_REGEXES]) for fillename in os.listdir(sstable_dir_path)])
【问题讨论】:
-
嘿,您可以在正则表达式中使用运算符 OR。
-
正如@BenyGj 所说,this 之类的东西只需在您的单个模式上使用一次
re.compile,其中包含大量|字符。 -
@KarlThornton 两组 [] 是什么意思?使用 |确实有帮助,谢谢!
标签: python python-3.x regex