簡體   English   中英

使用 Java 模式提取四位數字的正則表達式

[英]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#findMatcher#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());
}

請參閱Java 演示正則表達式演示 詳情

  • \d{4} - 四位數字
  • (?=\.[^.]+$) - 需要. char 然后是一個或多個除. 直到字符串結束。

還要注意Matcher m = pattern.matcher(fileName)添加和if (m.find())檢查是否有匹配。 只有匹配時,才能從第 0 個組m.group()中檢索該值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM