You need to enable JavaScript to run this app. 如何编写正则表达式提取指定前缀与后缀之间的目标字符串
优惠活动
大模型
产品
解决方案
定价
更多

如何编写正则表达式提取指定前缀与后缀之间的目标字符串

问题原因

你使用的.*属于贪婪匹配模式,会尽可能匹配最长的符合规则的字符串,因此匹配xlsm后缀时会从第一个出现的SpinTel开始,一直匹配到最后一个.xlsm结尾,将中间的pdf文件及大小描述等无关内容也包含进了匹配结果。同时你没有转义后缀前的.,会导致.被当作通配符匹配任意字符,存在匹配误差风险。

解决方案

你可以选择以下任意一种方式调整正则:

  • 方法1:改用非贪婪匹配,适配多后缀同时提取
    正则修改为:(?i)Spintel.*?\.(?:pdf|xlsm)
    说明:.*?为非贪婪匹配,会尽可能短的匹配字符,遇到第一个符合后缀规则的位置就停止;\.转义后仅匹配点号本身;(?:pdf|xlsm)是非捕获分组,可同时匹配pdf、xlsm两种后缀,不需要同时提取的话单独写对应后缀即可,比如仅提取xlsm就用(?i)Spintel.*?\.xlsm。
  • 方法2:使用排除字符类匹配,精准度更高
    正则修改为:(?i)Spintel[^)]+\.(?:pdf|xlsm)
    说明:[^)]+会匹配除右括号外的所有字符,刚好可以避开后面的文件大小括号内容,匹配结果更稳定。

两种方法匹配你的样例字符串,都可以准确得到SpinTel - 372464.pdf和SpinTel - 372464.xlsm两个目标结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 22:15:08