2

我发现IntelliJ IDE 中的结构搜索和替换功能非常强大。

在浏览现有模板并发现我的新超能力时,我遇到了名为“ logging without if”的模板。我的蜘蛛感觉敦促我检查“无”部分,因为它invert conditionComplete Match.

但是,我对 中使用的表达式感到困惑Complete Match。这里是:

if('_a) { 'st*; }

请帮助我了解如何使用此表达式。

2017 年 1 月 19 日更新:

正如@Faibbus 所指出的,文档说的_a_st变量。我的困惑是变量名。

名称_a_st仅出现在此处,而不会出现在模板中的其他位置。是什么让它们成为变量?结构搜索中的所有其他变量都被$dollar$符号包围。

下划线作为变量前缀的作用是什么?撇号在该表达式中的作用是什么?

我一点也不明白。我错过了什么?

4

1 回答 1

1

该表达式正在使用内部搜索条件语言。使用这种语言,可以在文本中指定完整的搜索查询,而无需通常的结构搜索对话框的所有文本字段和复选框。这种语言可能不应该暴露出来,并且会在 IntelliJ IDEA 2017.2 中更加隐藏。

也就是说,这里是对所用语言特性的简短说明:
- 单个刻度线表示一个变量。所以有两个变量,_ast
- 不以下划线开头的变量表示该变量是搜索的目标。每个查询只能有一个目标。目标也是如此st
-*表示零次或多次
- 查询的其余部分是常规 Java 片段

对于此搜索条件语言的其他功能,如果您有兴趣,可以查看源代码。

于 2017-05-06T18:39:58.467 回答