[英]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.