.NET 4.6.2正则表达式过滤含house的图片文件失败求助
修正后的正则表达式方案
原正则无法匹配house.gif、123house.png的核心问题:
\.+要求house与后缀之间必须存在至少一个任意字符,直接排除了house紧跟后缀的场景- 后缀前的
.未转义,会匹配任意字符而非实际的文件名点号 - 多余的
\b单词边界不必要地限制了匹配范围
基础修正版(匹配包含house的任意文件名)
Regex regex = new Regex(@"^.*house.*\.(jpg|png|gif)$", RegexOptions.IgnoreCase);
各部分作用:
^:锁定字符串开头,确保从文件名起始位置开始校验.*:匹配任意数量的任意字符(包括0个),支持house出现在文件名的任意位置house:精确匹配需要包含的目标字符串\.(jpg|png|gif):转义后的.匹配文件名的点号,括号内指定允许的后缀类型$:锁定字符串结尾,确保后缀是文件名的最后部分RegexOptions.IgnoreCase:可选参数,用于忽略大小写(比如匹配House.gif或HOUSE.PNG)
进阶版(仅匹配house作为独立单词的文件名)
如果需要确保house是独立单词(不匹配houser.gif这类包含house作为子串的文件名),可以调整为:
Regex regex = new Regex(@"^.*\bhouse\b.*\.(jpg|png|gif)$", RegexOptions.IgnoreCase);
这里的\b是单词边界,保证house前后为非单词字符(如开头、结尾、点号、横杠等)。
内容的提问来源于stack exchange,提问作者Bender.
相关产品推荐
相关产品推荐

