【问题标题】:how to negate search in intellij structural search如何在intellij结构搜索中否定搜索
【发布时间】:2021-12-28 23:36:52
【问题描述】:

如何从 intellij 的结构搜索中排除术语? (不是文本或正则表达式搜索!)

例如,使用带注释的字段模板,假设我想将 @Lazy 添加到所有出现的 @Autowired 类型 X 的字段中?

这意味着我想匹配:

@Autowired
private X x;

还有

@Autowired
@Getter
Private X x;

但不是

@Lazy
@Autowired
Private X x;

我从手册中了解了如何通过向元素添加条件text=... 来进行肯定匹配,但不了解如何添加否定。

编辑1: 正则表达式不是答案的原因(如评论中所建议的那样),是因为结构搜索匹配诸如我正在搜索的注释和字段之间的不同注释之类的东西,它也匹配字段上的任何访问前缀等。

如果我从结构化转向正则表达式/文本搜索查找/替换,那么我将遇到许多其他问题。

【问题讨论】:

  • 您可能会使用 /\@AutoWired\nprivate\s.*$/m/@Autowired\n@Getter\nPrivate\s.*$/m 之类的东西进行多行正则表达式匹配
  • 但这失去了作为结构搜索的能力。 (我已经更新了问题以明确这一点)

标签: java spring intellij-idea


【解决方案1】:

使用文本过滤器Lazy 和计数过滤器[0,0] 向搜索模板添加@$Lazy$ 注释。这只会找到没有@Lazy 注释的元素。

【讨论】:

  • 谢谢!很遗憾我错过了count 就在那里盯着我看:) 但得知我可以直接使用注释名称。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-22
  • 1970-01-01
  • 1970-01-01
  • 2011-03-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多