如何使用 IntelliJ 的结构替换 "all matches, except..."?
How to use IntelliJ's structural replacement for "all matches, except..."?
假设我想用 print(wrapper(x))
替换 print(x)
。我可以匹配
print($Argument$)
并将其替换为
print(wrapper($Argument$))
但是,如果我已经调用了 print(wrapper(x))
,我不想将其替换为 print(wrapper(wrapper(x)))
。我怎样才能避免这种情况?也就是说,"do the replacement, unless the arguments match some pattern"怎么说?
你会:
- 输入搜索模板(举例):
System.out.println($args$)
- 点击
Edit Variables
- 选择
$args$
变量
- 在
Text constraints -> Text/regexp
下输入^wrapper\(.*\)$
并勾选Invert condition
显然,您可以根据需要调整正则表达式。反转条件意味着搜索将跳过满足条件的所有实例。基本上你写一个正则表达式来匹配你不想看到的东西,Invert condition
是一个 NOT
运算符。
关于我的测试文本:
System.out.println( ex.getMessage() );
System.out.println( wrapper( ex.getMessage() ) );
第二个实例不在搜索结果中。
假设我想用 print(wrapper(x))
替换 print(x)
。我可以匹配
print($Argument$)
并将其替换为
print(wrapper($Argument$))
但是,如果我已经调用了 print(wrapper(x))
,我不想将其替换为 print(wrapper(wrapper(x)))
。我怎样才能避免这种情况?也就是说,"do the replacement, unless the arguments match some pattern"怎么说?
你会:
- 输入搜索模板(举例):
System.out.println($args$)
- 点击
Edit Variables
- 选择
$args$
变量 - 在
Text constraints -> Text/regexp
下输入^wrapper\(.*\)$
并勾选Invert condition
显然,您可以根据需要调整正则表达式。反转条件意味着搜索将跳过满足条件的所有实例。基本上你写一个正则表达式来匹配你不想看到的东西,Invert condition
是一个 NOT
运算符。
关于我的测试文本:
System.out.println( ex.getMessage() );
System.out.println( wrapper( ex.getMessage() ) );
第二个实例不在搜索结果中。