获取第三个空格-空格分隔符后文本的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
相关产品推荐
相关产品推荐

