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

正则表达式提取多连字符包裹的含特殊字符文本的匹配问题

解决方案

问题分析

原正则表达式 (?<=-)[^-]+(?=) 的缺陷在于使用了 [^-]+,它会匹配到内容中第一个 - 就停止,导致无法提取包含内部连字符的完整内容。

修正后的正则表达式

写法一(正向预查+非贪婪匹配)

(?<=^-{2,})\s*(.*?)\s*(?=-{2,}$)

写法二(捕获组模式,更直观)

^-{2,}\s*(.*?)\s*-{2,}$

正则说明

  • ^-{2,}:匹配行首的2个及以上连续连字符,准确定位内容的起始边界
  • \s*:匹配内容前后的空白字符(可根据实际需求保留或移除)
  • (.*?):非贪婪模式匹配任意字符,直到遇到行尾的连续连字符,避免过度截断内容
  • -{2,}$:匹配行尾的2个及以上连续连字符,定位内容的结束边界
  • 正向预查版本的 (?<=...) 和 (?=...) 用于定位边界但不捕获连字符本身

验证示例

对于输入行:

------- Start Check Data - (before measurement - may be cached data) ------------

使用修正后的正则,会完整提取出:
Start Check Data - (before measurement - may be cached data)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 00:22:16