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

如何在Notepad++中用正则替换指定[]为()(含场景排除)

在Notepad++中用正则表达式精准替换二维数组的[]为()

需求场景

需将代码中二维数组形式的方括号替换为圆括号,具体匹配规则:

  • 匹配并替换的示例:
    • abc[1, 2]; → abc(1, 2);
    • abc[EDGE, 2]; → abc(EDGE, 2);
    • abc[EDGE, otherArray[1]]; → abc(EDGE, otherArray[1]);
    • abc[array[VERT], other[INDEX]]; → abc(array[VERT], other[INDEX]);

排除场景

以下情况需完全忽略,不执行替换:

  • 方括号内仅单个元素:abc[1];、abc[index];
  • 方括号内有三个及以上元素:abc[1, 2, 3];、abc[otherArray[EDGE], 2, 8];

问题重现

此前的正则方案存在误匹配,会错误修改单元素数组(如示例中的test[0]),错误场景代码:

if (test[0])
{
    triangles.push_back(tris[i, V1]); // 之前的方案误处理了上方的'test[0]'
    triangles.push_back(tris[i, V2]);
    triangles.push_back(tris[i, V3]);
}

解决方案

操作步骤

  1. 打开Notepad++,按Ctrl+H调出替换窗口
  2. 勾选「正则表达式」选项,取消「.匹配换行符」的勾选
  3. 填入以下正则规则:
    • 查找模式:
      (\w+)\[(?=(?:[^,\[\]]|(?R))*,\s*(?:[^,\[\]]|(?R))*])(?!.*,\s.*,)((?:[^[\]]|(?R))*)\]
      
    • 替换为:
      $1($2)
      
  4. 点击「全部替换」完成批量修改

正则规则说明

  • (\w+):捕获数组标识符(由字母、数字、下划线组成的变量名)
  • \[:匹配左方括号
  • (?=(?:[^,\[\]]|(?R))*,\s*(?:[^,\[\]]|(?R))*]):正向预查,确保方括号内包含至少一个逗号且嵌套括号平衡
  • (?!.*,\s.*,):负向预查,确保方括号内仅存在一个逗号(排除多元素数组)
  • ((?:[^[\]]|(?R))*):捕获方括号内的完整内容(支持嵌套数组结构)
  • \]:匹配右方括号

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 12:01:08