You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于JSch库用正则表达式筛选SFTP服务器中的指定文件

正确匹配SFTP目录中三类文件的正则表达式

别担心,正则新手踩点坑太正常了!你之前的表达式没生效主要是对正则规则的理解偏差,咱们一步步捋清楚:

为什么你的原表达式不生效?

  • 正则里的*不是你以为的“匹配任意字符”(那是glob模式里的*),它的作用是匹配前面的字符0次或多次。比如UploadBusinessLicense_*会匹配UploadBusinessLicense后面跟0个或多个下划线,完全不是你要的“匹配前缀后的任意内容”。
  • 你在|两边加了空格,正则会把空格当成要匹配的字符之一,但你的文件名里并没有空格,这直接导致匹配失败。
  • 另外你也漏掉了第三类CustomerConsentForm_开头的文件~

正确的正则表达式

要精准匹配你提到的三类文件,用这个表达式就可以:

^(UploadBusinessLicense_|GovernmentPhotoID_|CustomerConsentForm_).+\.jpg$

拆解每个部分的作用:

  • ^:锁定文件名的开头,确保只有以这三个前缀开头的文件才会被选中
  • (UploadBusinessLicense_|GovernmentPhotoID_|CustomerConsentForm_):分组结构,用|分隔三个前缀,意思是“匹配这三个前缀中的任意一个”
  • .+:匹配任意非换行字符至少一次,对应你文件名里的xyzbus_<随机数>这类可变内容
  • \.jpg:匹配.jpg后缀,这里的.必须加反斜杠转义——因为正则里.是特殊字符,代表任意单个字符,转义后才会匹配真实的点号
  • $:锁定文件名的结尾,确保文件确实以.jpg结束,不会误匹配比如xxx.jpg.txt这类带多余后缀的文件

备选:用glob模式更简单(多数SFTP工具支持)

如果你的SFTP客户端支持glob模式(比如FileZilla、WinSCP这类主流工具都支持),其实不用正则也能轻松搞定,写法更直观:

UploadBusinessLicense_*.jpg GovernmentPhotoID_*.jpg CustomerConsentForm_*.jpg

这里的*就是你原本理解的“匹配任意字符”,用空格分隔多个模式,就能一次性选中三类文件~

内容的提问来源于stack exchange,提问作者tofan bal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:21:00