【问题标题】:Structural Search - Complete Match expression in IntelliJ结构搜索 - IntelliJ 中的完整匹配表达式
【发布时间】:2017-06-03 00:24:29
【问题描述】:

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

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

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

if('_a) { 'st*; }

请帮助我理解这个表达式是如何使用的。

2017 年 1 月 19 日更新:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多