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

如何匹配短连字符(含任意空格或无空格)前后的文本?正则表达式需求

正则匹配解决方案

示例字符串

My heart will go on - Celine Dion
My heart will go on  - Celine Dion 
My heart will go on    -   Celine Dion  
My heart will go on -Celine Dion
My heart will go on-    Celine Dion
My heart will go on-Celine Dion

需求

每行包含一个短连字符,连字符前后空格数量不限(可无),需要从每行提取两组字符串:My heart will go on 和 Celine Dion。

可行的正则表达式

^(.*?)\s*-\s*(.*)$

搭配全局多行模式(gm),可匹配所有行并按行处理。

正则说明

  • ^ 和 $:锚定每行的开头与结尾,确保整行内容被匹配
  • (.*?):非贪婪匹配模式,精准提取连字符前的目标内容,避免过度匹配后续字符
  • \s*:匹配0个或任意数量的空白字符(包括空格、制表符等),覆盖连字符前后有空格、无空格的所有场景
  • -(.*)$:匹配短连字符后,用贪婪模式提取该行剩余的目标内容

对比原有正则的问题

  • /(.*)(\s\-\s)(.*)/gm:仅能匹配连字符前后各有一个空格的情况,因为\s\-\s强制要求连字符前后必须有且仅有一个空格
  • ^(.*?)[\p{Zs}\t]+-[\p{Zs}\t]+(.*):要求连字符前后至少有一个空白字符(+表示至少一次),无法处理连字符前/后无空格的场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 08:52:20