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

如何用正则分别匹配含单+、双+的[[+xxx]]格式字符串?

正则匹配问题解决方案

一、区分匹配单+和双+的模板字符串

针对[[+pagetitle]]和[[++site_name]]两种格式,分别使用以下正则:

  • 匹配单+格式(如[[+pagetitle]]):
    \[\[\+(?!\+).*?\]\]
    
    说明:通过(?!\+)负向预查,确保+后面没有第二个+,避免误匹配双+格式。
  • 匹配双+格式(如[[++site_name]]):
    \[\[\+\+.*?\]\]
    
    说明:直接精确匹配两个连续的+,只会命中双+开头的模板。

为什么之前的正则失效?

你之前使用的\[{2}\+{1}.*?\]{2}中,\+{1}表示至少1个+,因此双+格式也会被匹配。加入负向预查后,就能严格区分单+和双+的边界。

二、通用问题:匹配指定重复次数的字符并捕获后续内容

要精确匹配重复n次的特定字符,并捕获该字符之后的所有内容,核心逻辑是:

  1. 用{n}精确指定字符的重复次数(不要用{n,},否则会匹配超过n次的情况);
  2. 用捕获组(...)包裹后续需要提取的内容。

示例:

  • 需求:匹配连续3个#之后的所有内容
  • 正则:
    #{3}(.*)
    
  • 如果需要确保前面没有额外的目标字符(比如避免匹配####xxx),可以加上负向预查:
    (?!#)#{3}(.*)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 08:25:20