结构搜索 - IntelliJ

时间:2017-01-18 14:55:51

标签: regex android-studio intellij-idea regex-negation structural-search

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

在浏览现有模板并发现我的新超能力时,我来到了名为" logging without if"的模板中。 我的蜘蛛意识促使我查看"没有"部分因为它使用了invert condition中的Complete Match

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

if('_a) { 'st*; }

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

更新2017/01/19:

正如@Faibbus所指出的,文档说_a_st是变量。 我的混淆是变量名称。

名称_a_st仅显示在此处,而模板中没有其他位置。 是什么让他们变数? 结构搜索中的所有其他变量都被$dollar$符号包围。

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

我根本没有发现它。我错过了什么?

1 个答案:

答案 0 :(得分:1)

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

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

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