You need to enable JavaScript to run this app. 如何编写正则表达式,提取首个斜杠后到第二个连字符前的内容(第二个连字符可能不存在)
优惠活动
大模型
产品
解决方案
定价
更多

如何编写正则表达式,提取首个斜杠后到第二个连字符前的内容(第二个连字符可能不存在)

正则匹配失败原因与修复方案

原有正则的核心缺陷

之前使用的(?<=\/)(.*)(?=-)存在两个明显问题:

  • 贪婪匹配溢出:.*是贪婪量词,会尽可能匹配更多字符,最终匹配到整个字符串最后一个连字符的前一位,对thisIs/My-7777-Any-other-text的匹配结果为My-7777-Any-other,远超出预期范围。
  • 无连字符场景完全失效:末尾的(?=-)是正向预查,要求匹配结束位置后必须跟随连字符,第二个测试字符串thisIs/My-7777末尾无连字符,无法匹配到任何内容。

适配需求的正则写法

根据「提取首个斜杠之后、第二个连字符之前的内容,第二个连字符可能不存在」的核心要求,可使用否定字符类规避贪婪匹配问题,正则为:
(?<=/)[^-]+-[^-]+

匹配效果验证

  • 输入thisIs/My-7777-Any-other-text:匹配结果为My-7777(精准定位到斜杠后的第二个连字符前)
  • 输入thisIs/My-7777:匹配结果为My-7777(无第二个连字符时自动匹配到字符串末尾)
    如果需要固定提取数字部分为3位,得到目标内容My-777,可调整正则为:
    (?<=/)[^-]+-\d{3}

调整后匹配效果

  • 输入thisIs/My-7777-Any-other-text:匹配结果为My-777
  • 输入thisIs/My-7777:匹配结果为My-777

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.09 10:24:02