Java replaceAll() 方法

标签 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

谁能解释一下?

最佳答案

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",它在 replaceAll 之后变为 screenshot_from_stackoverflow.jpg

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

关于Java replaceAll() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36320282/

相关文章:

java - 从线程返回对象

java - 在完全相同的工作负载下,一台服务器显示出高 CPU 负载

java - 正则表达式问题 Java

windows - 批处理文件字符串修改

java - 在 ESAPI 中编码和规范化

java - 如何在 Java 中比较字符串?

objective-c - 匹配字符串中短语的第一个单词

javascript - 缺少/正则表达式代码

javascript - 在 JSON 中指定正则表达式字符串,在 JavaScript 和 PHP 中使用它

java - 在 Groovy 中难以格式化日期