代码之家  ›  专栏  ›  技术社区  ›  kc2001

如何使用IntelliJ的结构替换“所有匹配项,除了…”?

  •  0
  • kc2001  · 技术社区  · 6 年前

    假设我想替换 print(x) print(wrapper(x)) . 我可以匹配

    print($Argument$)
    

    并用

    print(wrapper($Argument$))
    

    但是,如果我已经接到 打印(包装纸(x)) print(wrapper(wrapper(x))) . 我怎样才能避免呢?换言之,我该如何说“除非参数匹配某种模式,否则进行替换”?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Strelok    6 年前

    你会:

    1. 输入搜索模板(例如): System.out.println($args$)
    2. 点击 Edit Variables
    3. $args$ 变量
    4. 低于 Text constraints -> Text/regexp 进入 ^wrapper\(.*\)$ 还有滴答声 Invert condition

    显然,你可以调整正则表达式到任何你想要的。反转条件意味着搜索将跳过满足条件的所有实例。基本上你写一个正则表达式来匹配你不想看到的东西,然后 是一个 NOT

    在我的测试文本中:

    System.out.println( ex.getMessage() );
    System.out.println( wrapper( ex.getMessage() ) );
    

    第二个实例不在搜索结果中。