如何用正则表达式识别邮件中4个及以上指定格式的独立附件?
用正则表达式识别邮件中4个及以上Excel附件
完全可以实现。你现有正则(([a-zA-Z0-9\s_\.-():]){1,9}(.xls|.xlsm|.xlsx)){4,}$的问题是,它会要求同一个文件名里重复出现4次扩展名,而不是匹配4个独立的Excel文件,这才导致只有单个文件名含多个扩展名时才生效。
给你一个能匹配4个及以上独立Excel文件的正则:
(?:\b[a-zA-Z0-9\s_\.-():]+\.(?:xls|xlsm|xlsx)\b\s*){4,}
简单解释下各部分作用:
\b:单词边界,保证匹配的是完整独立的文件名,不会从一段长文本里截取片段[a-zA-Z0-9\s_\.-():]+:匹配文件名主体,+表示允许任意长度的合法文件名(替换了你原来的1-9字符限制,更符合实际场景)\.(?:xls|xlsm|xlsx):精准匹配Excel文件的三种扩展名,(?:...)是不捕获分组,能提升匹配效率\s*:匹配文件名之间的空白(包括空格、换行),适配邮件附件列表的常见格式(?:...){4,}:让整个独立文件的匹配规则重复4次及以上,确保至少识别到4个Excel附件
如果你的邮件附件列表用逗号、分号这类符号分隔文件名,可以把正则里的\s*改成[\s,;]*,适配不同的分隔格式。
内容的提问来源于stack exchange,提问作者herculesrockefeller
相关产品推荐
相关产品推荐

