java 正则匹配 yyyyMMddHHmmssSSS_sss.xlsx
时间: 2023-08-25 22:27:45 浏览: 91
正则表达式匹配
好的,如果你想匹配格式为 yyyyMMddHHmmssSSS_sss.xlsx 的字符串,可以使用如下的正则表达式:
```java
String patternString = "^\\d{17}_\\d{3}\\.xlsx$";
```
在这个正则表达式中,我们使用了正则表达式元字符 `^` 和 `$` 来匹配字符串的开头和结尾,`\\d{17}` 表示匹配 17 个数字字符(也就是年月日时分秒毫秒的组合),`_\\d{3}\\.xlsx` 表示匹配下划线和 3 个数字字符,以及 `.xlsx` 后缀。
如果你想提取字符串中的时间部分和文件后缀名,可以使用分组捕获的方式:
```java
String patternString = "^(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{3})_(\\d{3})\\.xlsx$";
String filename = "20220815160855999_123.xlsx";
Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher(filename);
if (matcher.matches()) {
int year = Integer.parseInt(matcher.group(1));
int month = Integer.parseInt(matcher.group(2));
int day = Integer.parseInt(matcher.group(3));
int hour = Integer.parseInt(matcher.group(4));
int minute = Integer.parseInt(matcher.group(5));
int second = Integer.parseInt(matcher.group(6));
int millisecond = Integer.parseInt(matcher.group(7));
int suffix = Integer.parseInt(matcher.group(8));
System.out.println(String.format("%d-%02d-%02d %02d:%02d:%02d.%03d, suffix=%d", year, month, day, hour, minute, second, millisecond, suffix));
}
```
在这个示例中,我们使用了分组捕获的方式提取了时间部分和文件后缀名,并将其输出。
注意,在使用正则表达式时,由于斜杠是正则表达式的特殊字符,需要使用转义字符将其转义,例如 `\d` 表示数字字符。此外,`.` 也是正则表达式的特殊字符,需要使用转义字符来匹配真实的点号,例如 `\\.xlsx` 表示匹配 `.xlsx` 后缀。
阅读全文