-2

我需要使用正则表达式从时间戳中提取年份和月份。

例子 :

我有一个时间戳:20130923161057。我需要使用正则表达式提取年份2013和月份09

4

4 回答 4

1

最简单的解决方案是使用String.substring(beginIndex, endIndex)

但是,如果您想要正则表达式,(\d{4})(\d{2}).* 请搜索从正则表达式匹配中提取组的示例。

于 2013-09-23T14:28:16.430 回答
1
Pattern pattern = Pattern.compile("(\\d{4})(\\d{2})\\d{8}");
Matcher matcher = pattern.matcher("20130923161057");
if (matcher.find()) {
    int year = Integer.parseInt(matcher.group(1));
    int month = Integer.parseInt(matcher.group(2));
    // do something with year/month
}
于 2013-09-23T14:28:24.850 回答
0

RegEx 在这里并不是很有用。与更易于阅读的String#substring(int, int)之类的 java 函数相比,您没有任何优势:

String timestamp = "20130923161057";

Sring year = timestamp.substring(0, 4);
String month = timestamp.substring(4, 6);

输出:

year = 2013
month = 09
于 2013-09-23T14:53:37.900 回答
0

如果你真的需要正则表达式,你可以这样做:

Pattern p = Pattern.compile("(?<year>\\d{4,4})(?<month>\\d{2,2})");
Matcher m = p.matcher("20130923161057");
if (m.find())
{
    String year = m.group("year");
    String month = m.group("month");

    System.out.println(year + "    " + month);
}
于 2013-09-23T14:28:42.847 回答