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

如何编写仅分割无空格相邻竖线短语的正则表达式

解决竖线两侧无空格时才分割的正则问题

核心需求回顾

要处理的测试字符串:

Other Suggestions|Like | Comment | Subscribe|134|58|Post |Contact Us

只分割那些竖线前后都没有空格的位置,保留Like | Comment | Subscribe、Post |Contact Us这类带空格竖线的完整片段。

为什么你之前的正则没生效

你用的(?<!\s)[^|]+(?!\s)是试图匹配「前后无空格的非竖线内容」,但它无法识别包含空格和带空格竖线的完整片段(比如Like | Comment | Subscribe里的竖线前后有空格,导致整个片段不符合这个正则的匹配逻辑),所以没法得到预期结果。

两种可行解决方案

方案1:用符合要求的竖线作为分割符

直接匹配前后都无空格的竖线作为分割标记,正则表达式为:

(?<!\s)\|(?!\s)

用这个正则对原字符串执行分割操作,就能得到目标结果:

  • Other Suggestions
  • Like | Comment | Subscribe
  • 134
  • 58
  • Post |Contact Us

方案2:直接匹配所有目标片段

如果不需要分割,而是直接提取所有符合要求的片段,可以用这个正则:

(?<=^|(?<!\s)\|)(.*?)(?=(?!\s)\||$)

它的逻辑是:

  • 断言片段开头是字符串起始,或者一个「前后无空格的竖线」
  • 非贪婪匹配内容,直到遇到下一个「前后无空格的竖线」或者字符串结尾
    匹配后得到的结果和分割方案完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 16:25:03