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

如何用正则表达式提取字符串中最后一个'-'后、'_'前的内容?

正则提取"FileType"的方案

针对示例字符串randomname-id-mininthostname-FileType_20221118.zip,可以用以下几种正则方案精准提取"FileType":

  • 方案一:使用正向/反向断言
    匹配最后一个-之后、第一个_之前的内容,正则表达式为:

    (?<=-)[^-_]+(?=_)
    

    解释:

    • (?<=-):正向反向断言,确保匹配内容的前面是-
    • [^-_]+:匹配任意非-和_的字符,直到遇到_停止,避免多余字符混入
    • (?=_):正向断言,确保匹配内容的后面是_
  • 方案二:使用捕获组
    如果你的正则引擎支持捕获组,可采用更直观的写法,提取第一个捕获组的内容即可:

    -([^-_]+)_
    

    解释:

    • -:匹配目标内容前的分隔符-
    • ([^-_]+):捕获组,精准匹配目标内容(非-和_的字符序列)
    • _:匹配目标内容后的分隔符_

你之前使用的(?=-).*(?<=_)返回错误结果,是因为.*会匹配任意字符直到最后一个符合断言的位置,从而包含了前面的多余内容。而[^-_]+限制了匹配范围,只取两个分隔符之间的目标内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 07:45:49