如何用正则表达式匹配所有非.csv后缀的文件?
匹配不以.csv结尾的文件的正则方案
要直接排除以.csv结尾的文件,不用枚举其他后缀,核心是用负向断言,这是最简洁的方式,以下是两种常用实现:
1. 负向先行断言(通用兼容)
正则表达式:
^(?!.*\.csv$).+$
各部分解释:
^锚定字符串开头(?!.*\.csv$)负向先行断言:检查从开头到结尾的整个字符串,不能存在以.csv收尾的情况.+匹配至少一个任意字符(避免匹配空文件名)$锚定字符串结尾
2. 负向后行断言(部分引擎支持)
如果你的正则引擎支持后行断言(比如PCRE、Python 3.6+、JavaScript ES2018+等),可以用更直观的写法:
^.+$(?<!\.csv)
各部分解释:
^.+$匹配任意非空字符串(?<!\.csv)负向后行断言:检查字符串结尾的位置,前面不能是.csv
注意事项
- 若要允许空字符串(实际文件名一般不会出现),可将
.+替换为.*,比如^(?!.*\.csv$).*$ - 大小写处理:如果需要匹配
.CSV/.Csv这类变体,要么开启正则引擎的不区分大小写模式,要么修改断言部分为(?!.*\.[Cc][Ss][Vv]$)
测试示例
- 会匹配的文件名:
report.tif、data.xls、image.jpg、readme.txt、archive.zip - 不会匹配的文件名:
data.csv、backup.CSV(不区分大小写模式下)
内容的提问来源于stack exchange,提问作者Warren
相关产品推荐
相关产品推荐

