使用 Regex 允许具有正确名称的文件

Allowing files with proper names using Regex

这里有不同的文件,输出应该是这样的:

  1. abc.csv - 正确
  2. abc.csv.gz - 失败
  3. abc.csv.csv - 失败
  4. abc.def.csv - 正确

目前的正则表达式看起来像 .*[.]csv$,它通过了案例 1 和案例 2,但没有通过案例 3 和案例 4。我尝试使用 {} 和 \B 只允许 1 个扩展,但无法正确实现.

正如评论中所说,filename.endswith('.csv') 在我看来是最 pythonic 的选项。

也就是说,如果您想使用正则表达式,可以使用 re.match('.*(?<!\.csv)(\.csv)$', s)re.fullmatch('.*(?<!\.csv)(\.csv)', s)

s = 'abc.csv.csv'
re.match('.*(?<!\.csv)(\.csv)$', s)
# no match

s = 'abc.def.csv'
re.match('.*(?<!\.csv)(\.csv)$', s)
#<re.Match object; span=(0, 11), match='abc.def.csv'>

regex demo