提问人:blekione 提问时间:5/16/2019 最后编辑:blekione 更新时间:6/16/2019 访问量:299
正则表达式匹配 /src/main/{any_package}/*.java
Regex to match /src/main/{any_package}/*.java
问:
我需要一个仅包含文件的集合的正则表达式,以便仅将 CheckStyle 规则应用于 Eclipse 中的这些文件。/src/main/java/{any_package}/*.java
所有其他文件,例如:none *.java files, src/test/ 都应该被忽略。
答:
-1赞
blekione
5/16/2019
#1
我正在寻找的正则表达式是src[\/]main\/java\/?(?:[^\/]+\/?)*.java$
评论
0赞
Andreas
5/16/2019
这个问题和自我回答是没有用的。这只是无数个示例中的一个例子,这些示例说明了如何编写正则表达式来匹配模式。你真的认为 StackOverflow 应该充满人们可以想象到的每种模式的例子吗?那没用。
0赞
blekione
5/16/2019
公平点。我写它更多是为了给自己参考。我不是正则表达式大师,今天这不是我第一次在互联网上询问这个正则表达式,但没有成功。下次我会寻找它(它迟早会发生)我会知道在哪里寻找。或者也许是时候创建私人维基了?
0赞
Andreas
5/16/2019
私有 wiki 听起来像是存储自制代码片段以供重用的正确位置。如果你想分享你的片段,你甚至可以把它变成一个(半)公共的wiki,但StackOverflow不适合这个。
1赞
Emma
6/16/2019
#2
也许,这个表达式在这里也起作用,即使你的原始表达式是好的。
^\/src\/main\/java(\/[^\/]+)?\/\*\.java$
演示 1
我的猜测是,我们希望在这里通过:
/src/main/java/{any_package}/*.java
/src/main/java/*.java
如果第二个是不需要的,那么我们只需删除可选组:
^\/src\/main\/java(\/[^\/]+)\/\*\.java$
演示 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 可视化正则表达式:
评论
Path
Files