可以自动获得Intellij对正确的regex参数的正则表达式帮助

Boh*_*ian 9 java regex syntax-highlighting intellij-idea

Intellij为期望正则表达式的参数提供正则表达式"帮助"(语法检查),例如编码:

String[] array = string.split("(*.");
Run Code Online (Sandbox Code Playgroud)

将在正则表达式下标记错误并提供工具提示错误:

未公开组

这也适用于变量,例如

String myVar = "(*."; // shows above error here
String[] array = string.split(myVar);
Run Code Online (Sandbox Code Playgroud)

但是,如果我创建自己的方法,期望正则表达式,我不会得到这种帮助,例如:

String[] myMethod(String regexParameter) {
    return someString.split(regexParameter);
}

myMethod("(*."); // no "error" marker like above
Run Code Online (Sandbox Code Playgroud)

尽管Intellij可以确定regexParameter应该是一个有效的正则表达式,但它并不像JDK参数那样检查它.

如何获得我自己的方法参数的正则表达式帮助?


注意:

理想情况下,会有一个基于注释的解决方案或类似方法,其中方法的参数被"定义"为Intellij的正则表达式,因此所有开发人员在加载代码库时自动获得帮助.

Baj*_*jal 13

要在IDE中激活参数的正则表达式语言,请双击正则表达式字符串并按AltEnter(意图操作的快捷方式)并选择"注入语言或引用",然后在结果列表中选择" 正则表达式":

在此输入图像描述

这将永久地将正则表达式附加到所有呼叫站点的参数.

要对多个文本片段执行此操作,请按住ShiftAlt键并继续双击所有实例(IntelliJ中的多选功能).

要创建一个自动具有Intellij语言辅助功能的参数,所以您的其他开发团队成员也可以自动获得正则表达式帮助,使用IntelliJ的IntelliLang插件,将jetbrains的注释库添加为编译依赖项,例如gradle:

dependencies {
    ...
    compile 'org.jetbrains:annotations:15.0'
}
Run Code Online (Sandbox Code Playgroud)

然后使用它,指定"RegExp"@Language参数:

import org.intellij.lang.annotations.Language;

void myMethod(@Language("RegExp") String regex) {
    // some impl
}
Run Code Online (Sandbox Code Playgroud)

传递给该方法的字符串的正则表达式验证现在可以通过编辑Intellij中的源代码的任何人调用任何方法.


注意:不建议在构建中添加依赖项(如果有的话),并且知道效果仅在IDE中,并且您必须在IDE中编译,Intellij允许您执行此操作这个:

  1. @Language("RegExp")向方法参数添加注释
  2. 单击红色灯泡图标可将注释导入类路径

在此输入图像描述

在此输入图像描述

  • 我做的主要改变是使用适当的gradle依赖,所以任何人都可以构建代码.您的版本会破坏团队的构建,因为语言注释只会在*your*IDE中的*your*classpath*上.另外我为钥匙添加了一些降价铃铛和口哨:) (2认同)