Java replaceAll()方法

时间:2016-03-30 21:43:33

标签: java regex string replaceall

我想了解这段代码:

for (File f : files) {
     fileName = f.getName().toUpperCase().replaceAll("_\\d\\d\\d\\d_\\d\\d_\\d\\d_\\d\\d_\\d\\d", "");

     if (fileName.equals(tableName + ".XML")) {
         returnFile = f;
         break;
     }
}

我被困在这个部分:replaceAll("_\\d\\d\\d\\d_\\d\\d_\\d\\d_\\d\\d_\\d\\d", "")

据我所知,它试图从名称中删除一些内容(可能是下划线“_”),但究竟是什么_\\d\\d\\d\\d_\\d\\d_\\d\\d_\\d\\d_\\d\\d

有人可以解释一下吗?

3 个答案:

答案 0 :(得分:2)

str.replaceAll("_\\d\\d\\d\\d_\\d\\d_\\d\\d_\\d\\d_\\d\\d", "")获取字符串str并将所有正则表达式_\d\d\d\d_\d\d_\d\d_\d\d_\d\d的匹配项替换为空(即"")。 (编写\\d而不是\d的原因是\被转义。)

在这种情况下,\d表示"数字"。因此,它很可能会从字符串中删除日期/时间。例如,如果str"screenshot_from_stackoverflow_2016_03_30_23_47.jpg",则在screenshot_from_stackoverflow.jpg之后变为replaceAll

要了解正则表达式,它们如何工作以及它们可以做什么,我建议您阅读它们,例如regular-expressions.info。它有一个非常全面的tutorial可用。

答案 1 :(得分:1)

  

据我所知,它试图从名称中删除一些东西(可能是下划线“_”),但究竟是什么 \ d \ d \ d \ d \ d \ d_ \ d \ D_ \ d \ D_ \ d \ d

这种模式将匹配此格式[0-9]中的数字_XXXX_XX_XX_XX_,并将其替换为"",即无。

例如,

_7686_77_78_77_77
_0123_65_58_56_12

将在您的字符串中使用""替换。

答案 2 :(得分:1)

\ d - 匹配数字[0-9]

Java RegEx