[英]Regex to extract four digits using Java Pattern
我正在嘗試使用 Java 模式匹配器在文件擴展名之前提取四位數字。 它沒有拋出任何組發現異常。 有人可以幫我嗎?
String fileName = "20210101-000000_first_second_1234.csv";
Pattern pattern = Pattern.compile("\\\\d{4}");
System.out.println(pattern.matcher(fileName).group(4));
我想從文件名中得到1234
。 我使用正則表達式\\\\d{4}
編譯了文件模式。 返回四個組。 因此,第四組應該假設返回未返回的1234
,而不是拋出未找到組的異常。
"\\\\d{4}"
字符串字面量定義了一個匹配\dddd
字符串(反斜杠和四個d
字符)的\\d{4}
正則表達式。 您嘗試訪問第 4 組,但您的正則表達式中沒有定義捕獲組。 此外,在使用Matcher#find
或Matcher#matches
實際運行匹配器之前,您無法訪問匹配組。
您可以使用
String fileName = "20210101-000000_first_second_1234.csv";
Pattern pattern = Pattern.compile("\\d{4}(?=\\.[^.]+$)");
Matcher m = pattern.matcher(fileName);
if (m.find()) {
System.out.println(m.group());
}
\d{4}
- 四位數字(?=\.[^.]+$)
- 需要.
char 然后是一個或多個除.
直到字符串結束。 還要注意Matcher m = pattern.matcher(fileName)
添加和if (m.find())
檢查是否有匹配。 只有匹配時,才能從第 0 個組m.group()
中檢索該值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.