gpt4 book ai didi

java - 正则表达式使用Java模式提取四位数字

转载 作者:行者123 更新时间:2023-12-02 16:00:26 25 4
gpt4 key购买 nike

我正在尝试使用 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,而不是抛出 group not found 异常。

最佳答案

"\\\\d{4}" 字符串文字定义了一个 \\d{4} 匹配 \dddd 字符串(一个反斜杠,然后是四个 d 字符)。您尝试访问第 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 demoregex demo . 详细信息:

  • \d{4} - 四位数
  • (?=\.[^.]+$) - 需要 . 字符然后是 以外的一个或多个字符的正向前瞻。 直到字符串结束。

另请注意添加的 Matcher m = pattern.matcher(fileName)if (m.find()) 检查是否存在匹配项。只有匹配,才能从第 0 组中检索值,m.group()

关于java - 正则表达式使用Java模式提取四位数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70794309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com