我需要使用正则表达式从时间戳中提取年份和月份。
例子 :
我有一个时间戳:20130923161057
。我需要使用正则表达式提取年份2013
和月份09
。
最简单的解决方案是使用String.substring(beginIndex, endIndex)
但是,如果您想要正则表达式,(\d{4})(\d{2}).*
请搜索从正则表达式匹配中提取组的示例。
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
}
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
如果你真的需要正则表达式,你可以这样做:
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);
}