结构搜索 - IntelliJ 中的完整匹配表达式
Structural Search - Complete Match expression in IntelliJ
我发现 IntelliJ IDE 中的 结构搜索和替换 功能非常强大。
在浏览现有模板并发现我的新超能力时,我偶然发现了名为“logging without if
”的模板。
我的蜘蛛感觉促使我检查 "without" 部分,因为它在 Complete Match
.
中使用了 invert condition
然而,我对 Complete Match
中使用的表达感到困惑。
这是:
if('_a) { 'st*; }
请帮我理解这个表达式的用法。
更新 2017/01/19:
正如@Faibbus 所指出的,文档说 _a
和 _st
是变量。
我的困惑在于变量名。
名字_a
和_st
只出现在这里,没有出现在模板的其他地方。
是什么使它们成为变量? 结构搜索中的所有其他变量都被$dollar$
符号包围。
下划线作为变量前缀的作用是什么?撇号在该表达式中起什么作用?
我一点也不清楚。我错过了什么?
表达式正在使用内部搜索条件语言。使用这种语言,可以在文本中指定完整的搜索查询,而无需通常结构搜索对话框的所有文本字段和复选框。这种语言可能不应该被暴露,并且会在 IntelliJ IDEA 2017.2 中更加隐藏。
话虽如此,这里是对所用语言的功能的简短说明:
- 单个刻度线表示一个变量。所以有两个变量,_a
和 st
.
- 不以下划线开头的变量表示此变量是搜索目标。每个查询只能有一个目标。所以st
是目标。
- *
表示 零次或多次 。
- 查询的其余部分是常规 Java 片段
对于此搜索条件语言的其他功能,如果您有兴趣,可以查看 the source。
我发现 IntelliJ IDE 中的 结构搜索和替换 功能非常强大。
在浏览现有模板并发现我的新超能力时,我偶然发现了名为“logging without if
”的模板。
我的蜘蛛感觉促使我检查 "without" 部分,因为它在 Complete Match
.
invert condition
然而,我对 Complete Match
中使用的表达感到困惑。
这是:
if('_a) { 'st*; }
请帮我理解这个表达式的用法。
更新 2017/01/19:
正如@Faibbus 所指出的,文档说 _a
和 _st
是变量。
我的困惑在于变量名。
名字_a
和_st
只出现在这里,没有出现在模板的其他地方。
是什么使它们成为变量? 结构搜索中的所有其他变量都被$dollar$
符号包围。
下划线作为变量前缀的作用是什么?撇号在该表达式中起什么作用?
我一点也不清楚。我错过了什么?
表达式正在使用内部搜索条件语言。使用这种语言,可以在文本中指定完整的搜索查询,而无需通常结构搜索对话框的所有文本字段和复选框。这种语言可能不应该被暴露,并且会在 IntelliJ IDEA 2017.2 中更加隐藏。
话虽如此,这里是对所用语言的功能的简短说明:
- 单个刻度线表示一个变量。所以有两个变量,_a
和 st
.
- 不以下划线开头的变量表示此变量是搜索目标。每个查询只能有一个目标。所以st
是目标。
- *
表示 零次或多次 。
- 查询的其余部分是常规 Java 片段
对于此搜索条件语言的其他功能,如果您有兴趣,可以查看 the source。