是否可以自动获取 Intellij 对自己的正则表达式参数的正则表达式帮助

Can one automatically get Intellij's regex assistance for one's own regex parameters

Intellij 为需要正则表达式的参数提供正则表达式“帮助”(语法检查),例如编码:

String[] array = string.split("(*.");

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

Unclosed group

这也适用于变量,例如

String myVar = "(*."; // shows above error here
String[] array = string.split(myVar);

但是如果我创建自己的需要正则表达式的方法,我将无法获得此帮助,例如:

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

myMethod("(*."); // no "error" marker like above

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

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


注:

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

要为 IDE 中的参数激活正则表达式语言,请双击正则表达式字符串并按 AltEnterIntention Actions 的快捷方式)并选择 "Inject Language or Reference",然后在结果列表中选择 "Regexp":

这会将正则表达式永久附加到所有调用站点的参数。

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

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

dependencies {
    ...
    compile 'org.jetbrains:annotations:15.0'
}

然后要使用它,请将 "RegExp" 指定为参数的 @Language

import org.intellij.lang.annotations.Language;

void myMethod(@Language("RegExp") String regex) {
    // some impl
}

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


注意:还有一种不推荐的替代方法,即向您的构建添加依赖项(如果您有的话),并且知道效果仅在您的 IDE 中,您将不得不在你的 IDE 中编译,Intellij 允许你这样做:

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