[英]Regex to match version number for zero or more time
我正在编写一个正则表达式来匹配以下类型的字符串:
my-jar-1.2.3.5.jar
my-jar.jar
my-jar-1.2.jar
借助A正则表达式进行版本号解析,我发现了以下内容
String pat = "^my-jar(-|\\.)?(?:(\\d+)\\.)?(?:(\\d+)\\.)?(?:(\\d+)\\.)?(\\*|\\d+).jar$";
Pattern patt = Pattern.compile(pat);
System.out.println("For my-jar-1.2.jar - " + patt.matcher("my-jar-1.2.jar").find());
System.out.println("For my-jar-1.2.3.5.jar - " + patt.matcher("my-jar-1.2.3.5.jar").find());
System.out.println("For my-jar.jar - " + patt.matcher("my-jar.jar").find());
输出是
For my-jar-1.2.jar - true
For my-jar-1.2.3.5.jar - true
For my-jar.jar - false
如何在我的正则表达式中包含最后一个案例?
这应该适合你:
public static void main(String[] args) {
String s1 = "my-jar-1.2.3.5.jar";
String s2 = "my-jar.jar";
String s3 = "my-jar-1.2.jar";
System.out.println(s1.matches("my-jar(?:\\.|\\-(\\d+.)+)jar"));
System.out.println(s2.matches("my-jar(?:\\.|\\-(\\d+.)+)jar"));
System.out.println(s3.matches("my-jar(?:\\.|\\-(\\d+.)+)jar"));
}
O / P:
的确如此
"my-jar(?:\\\\.|\\\\-(\\\\d+.)+)jar"
==>以my-jar
开头,然后是“。” 或者-
和一组或多组<digit>.
然后`jar。
你能试试吗?
^my-jar(-|\\.)?(?:(\\d*)\\.)?(?:(\\d*)\\.)?(?:(\\d*)\\.)?(\\*|\\d*).jar$
尝试
^my-jar(?:-\d+(?:\.\d+)*)?\.jar$
它匹配强制文件名my-jar
,然后有一个可选的非捕获组,如果接下来是数字,则匹配。 然后,仍然在第一个可选组内,还有另一个非捕获组,它可以重复任意数量的时间(0 -...),带有一个开始点后跟数字。
最后,无论是否匹配了可选组,它都会通过匹配.jar
序列而结束。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.