是否可以自动获取 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 中的参数激活正则表达式语言,请双击正则表达式字符串并按 AltEnter(Intention 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 允许你这样做:
- 给方法参数添加
@Language("RegExp")
注解
- 单击红色灯泡图标 将注释导入类路径
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 中的参数激活正则表达式语言,请双击正则表达式字符串并按 AltEnter(Intention 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 允许你这样做:
- 给方法参数添加
@Language("RegExp")
注解 - 单击红色灯泡图标 将注释导入类路径