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

获取第三个空格-空格分隔符后文本的RegEx实现需求

捕获第三个" - "后文本的正则实现方案

没问题,这就帮你搞定这个正则需求!针对你提到的这种用-(空格-减号-空格)分隔多段的字符串(比如005 - 0000 - 2310 - Storage - Summer、007 - 0000 - 1610 - Legal - Criminal Law这类),我们可以用下面的正则精准捕获第三个分隔符之后的所有内容,哪怕这部分包含连字符也完全支持:

^(?:[^-]+ - ){3}(.*)$

正则各部分详解

我给你拆解下这个正则的逻辑,方便你理解和调整:

  • ^:锚定字符串的起始位置,确保我们从开头开始匹配,避免中间匹配的干扰
  • (?:[^-]+ - ){3}:这是一个非捕获组(用(?:...)表示,不会保存分组内容),重复执行3次:
    • [^-]+:匹配任意不是连字符的字符,至少一个(用来匹配每个分隔符前的内容)
    • -:精确匹配你指定的分隔符(空格-减号-空格)
  • (.*):这是我们要的捕获组,会匹配并保存第三个分隔符之后的所有内容(包括连字符、空格、字母、数字等任意字符)
  • $:锚定字符串的结束位置,确保我们匹配到整个字符串的结尾

测试验证

用你给出的两个例子测试,结果完全符合预期:

  • 输入字符串:005 - 0000 - 2310 - Storage - Summer
    捕获到的内容:Storage - Summer
  • 输入字符串:007 - 0000 - 1610 - Legal - Criminal Law
    捕获到的内容:Legal - Criminal Law

实用小提示

如果你的实际场景中有一些特殊情况,可以微调正则:

  • 如果字符串可能存在前导或尾随空格,可以在正则前后加上\s*兼容,比如:
    ^\s*(?:[^-]+ - ){3}(.*?)\s*$
    
  • 在不同编程语言中使用时,提取捕获组的方式略有不同,比如Python中可以这样用:
    import re
    pattern = r'^(?:[^-]+ - ){3}(.*)$'
    text = "005 - 0000 - 2310 - Storage - Summer"
    result = re.match(pattern, text).group(1)
    # result 值为 "Storage - Summer"
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:49:25