如何使用正则表达式匹配文件名列表中带扩展名的任意文件名?
正则表达式修改方案
问题分析
原正则的核心问题:
\b单词边界对包含-、.的文件名不适用,导致边界判断错误- 字符集
[\w\s]+未包含-和.,无法匹配带这些符号的文件名前缀 - 末尾的
\s*\b会捕获尾部空格,导致结果带冗余空格
修改后的正则表达式
(?<=^|\s)([\w\s.-]+?\.\w+)(?=\s|$)
修改说明
- 边界处理:用正向断言
(?<=^|\s)和(?=\s|$)替代\b,精准匹配文件名的前后边界(字符串开头/结尾或空格),避免特殊字符干扰边界判断 - 字符集扩展:将
[\w\s]+改为[\w\s.-]+?,加入-和.允许文件名包含这些符号;+?是非贪婪匹配,确保只匹配到最后一个扩展名前的内容,防止过度匹配 - 去除尾部空格:通过断言替代原有的
\s*,确保捕获组内仅包含纯文件名,不附带尾部空格
匹配结果
使用修改后的正则,可准确匹配以下三个文件名:
file1.texdhdgs kdkd.csvf-i.le.jpg
内容的提问来源于stack exchange,提问作者Victor
相关产品推荐
相关产品推荐

