如何将IntelliJ的结构替换用于“除...以外的所有匹配项”?

时间:2018-09-06 18:08:52

标签: intellij-idea structural-search

让我们说我想用print(x)代替print(wrapper(x))。我可以搭配

print($Argument$)

并替换为

print(wrapper($Argument$))

但是,如果我已经接到print(wrapper(x))的电话,我不想将其替换为print(wrapper(wrapper(x)))。我该如何避免呢?换句话说,我怎么说“除非参数匹配某种模式,否则要进行替换”?

1 个答案:

答案 0 :(得分:1)

您将:

  1. 输入搜索模板(例如):System.out.println($args$)
  2. 点击Edit Variables
  3. 选择$args$变量
  4. Text constraints -> Text/regexp下输入^wrapper\(.*\)$并勾选Invert condition

显然,您可以将正则表达式调整为所需的格式。反转条件意味着搜索将跳过满足条件的所有实例。基本上,您编写了一个正则表达式以匹配您不希望看到的内容,并且Invert conditionNOT运算符。

在我的测试文字上:

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

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