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

如何精准匹配一对==与另一对==并提取中间内容(排除标签)

精准匹配双等号包裹内容的正则解决方案

我来帮你搞定这个正则匹配的问题——你之前用的==([^=]+?)==*之所以会出错,核心问题在于它没限制前后的等号必须是恰好两个,而且[^=]+?会把中间带单个等号的内容直接排除(如果你的内容里需要包含单个等号的话,这也会有问题)。

正确的正则表达式

(?<!=)==\s*(.*?)\s*==(?!=)

逐部分解释

  • (?<!=):负向后行断言,确保我们要匹配的==前面没有额外的等号,这样就不会误匹配=== B ===里的前两个等号。
  • ==:精准匹配开头的一对双等号。
  • \s*:匹配0个或多个空格,完美处理你提到的“内容两侧空格不影响”的需求。
  • (.*?):非贪婪匹配中间的所有内容(包括单个等号),避免过度匹配到其他==对。
  • \s*:同样处理内容结尾的空格。
  • ==:匹配结尾的一对双等号。
  • (?!=):负向先行断言,确保==后面没有额外的等号,排除=== B ===里的后两个等号。

测试示例

用你的测试文本:

== A == gremjkgmek === B === evev3tt3wtegrget ==== C ==== regikegerg === D === rekgmer == E == emrgmegm

这个正则会精准捕获到两个结果:A和E,完全符合你的需求。

代码示例(以JavaScript为例)

const text = "== A == gremjkgmek === B === evev3tt3wtegrget ==== C ==== regikegerg === D === rekgmer == E == emrgmegm";
const regex = /(?<!=)==\s*(.*?)\s*==(?!=)/g;
const results = [...text.matchAll(regex)].map(item => item[1]);
console.log(results); // 输出: ["A", "E"]

额外说明

如果你的内容里需要包含==(比如== hello == world ==),这个正则会分别匹配hello和world——这是符合“独立双等号对”的预期的。如果需要处理嵌套场景,那就要根据具体需求调整,但根据你的示例,这个表达式完全够用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:26:57