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

如何使用Regex匹配第一个pipe到第三个pipe之间的所有字符串

问题原因

你之前使用的.*\|(.*)\|无法得到正确结果,是因为正则默认的*量词为贪婪模式,.*\|会尽可能多匹配字符,直接匹配到字符串倒数第二个|的位置,最终捕获组只能拿到最后一段分隔内容,不符合需求。

解决方案

方案1:分组捕获(兼容性最好,所有正则引擎都支持)

使用正则:^[^|]*\|\s*([^|]+\|[^|]+)\s*\|
捕获组1的内容就是你需要的结果,正则里的\s*会自动去除匹配内容前后的空格,如果需要保留原始空格可删除这两个\s*。

方案2:零宽断言(直接返回匹配结果,无需提取捕获组,适合支持后向断言的引擎如Python re、Java、JS ES2018+)

使用正则:(?<=\|)[^|]+\|[^|]+(?=\|)
直接匹配到的结果就是目标内容。

效果验证

拿你给出的示例字符串测试:
原始字符串:DOWN | Origin - test-pd-2 | Pool - test-pd | TCP timeout occurred
两种方案匹配到的结果都是:Origin - test-pd-2 | Pool - test-pd,符合预期。

内容的提问来源于stack exchange,提问作者Anıl Baki Durmuş

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:57:04