匹配 /src/main/{any_package}/*.java 的正则表达式
Regex to match /src/main/{any_package}/*.java
我需要一个 Regex 用于仅包含来自 /src/main/java/{any_package}/*.java
的文件的集合,以便仅将 CheckStyle 规则应用于 Eclipse 中的这些文件。
所有其他文件,例如:none *.java 文件,src/test/ 应被忽略。
我正在寻找的正则表达式是 src[\/]main\/java\/?(?:[^\/]+\/?)*.java$
也许,这个表达式在这里也能起作用,即使你原来的表达式没问题。
^\/src\/main\/java(\/[^\/]+)?\/\*\.java$
Demo 1
我的猜测是我们希望通过:
/src/main/java/{any_package}/*.java
/src/main/java/*.java
如果不需要第二个,那么我们只需删除可选组:
^\/src\/main\/java(\/[^\/]+)\/\*\.java$
Demo 2
它可能仍然有效。
测试
import java.util.regex.Matcher;
import java.util.regex.Pattern;
final String regex = "^\/src\/main\/java(\/[^\/]+)\/\*\.java$";
final String string = "/src/main/java/{any_package}/*.java\n"
+ "/src/main/java/*.java";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}
正则表达式电路
jex.im 可视化正则表达式:
我需要一个 Regex 用于仅包含来自 /src/main/java/{any_package}/*.java
的文件的集合,以便仅将 CheckStyle 规则应用于 Eclipse 中的这些文件。
所有其他文件,例如:none *.java 文件,src/test/ 应被忽略。
我正在寻找的正则表达式是 src[\/]main\/java\/?(?:[^\/]+\/?)*.java$
也许,这个表达式在这里也能起作用,即使你原来的表达式没问题。
^\/src\/main\/java(\/[^\/]+)?\/\*\.java$
Demo 1
我的猜测是我们希望通过:
/src/main/java/{any_package}/*.java
/src/main/java/*.java
如果不需要第二个,那么我们只需删除可选组:
^\/src\/main\/java(\/[^\/]+)\/\*\.java$
Demo 2
它可能仍然有效。
测试
import java.util.regex.Matcher;
import java.util.regex.Pattern;
final String regex = "^\/src\/main\/java(\/[^\/]+)\/\*\.java$";
final String string = "/src/main/java/{any_package}/*.java\n"
+ "/src/main/java/*.java";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}
正则表达式电路
jex.im 可视化正则表达式: