1)规则描述:
[1-9] :匹配1~9的数字;
\d :匹配数字,包括0~9;
* :紧跟在 \d 之后,表明可以匹配零个及多个数字;
\. :匹配小数点;
? :紧跟在 \. 之后,表明可以匹配零个或一个小数点;
0 :匹配一个数字0;
其中的 [1-9]\d*\.?\d* 用以匹配诸如:1、23、34.0、6.7 之类的非负的整数和浮点数;
其中的 0\.\d*[1-9] 用以匹配诸如:0.1、0.23、0.405 之类的非负浮点数;
知道规则后我们可以根据需求自由搭配。
二、java正则表达式匹配日期格式
示例如下:
public static String getLogTime(String time) {
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//1
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");//2
SimpleDateFormat sdf3 = new SimpleDateFormat("dd/MMM/yyyy:HH:mm:ss Z", Locale.US);// 3
String format1 = "((19|20)[0-9]{2})-(0?[1-9]|1[012])-(0?[1-9]|[12][0-9]|3[01]) "
+ "([01]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]";
String format2 = "((19|20)[0-9]{2})-(0?[1-9]|1[012])-(0?[1-9]|[12][0-9]|3[01])T"
+ "([01]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]";
Pattern p1 = Pattern.compile(format1);
Matcher m1 = p1.matcher(time);
Pattern p2 = Pattern.compile(format2);
Matcher m2 = p2.matcher(time);
try {
if (m1.find()) {
Date date = sdf1.parse(time);
return sdf1.format(date);
}
if (m2.find()) {
Date date = sdf2.parse(time);
return date.toLocaleString();
} else {//dd/MMM/yyyy:HH:mm:ss
Date date = sdf3.parse(time);
return sdf1.format(date);
}
} catch (ParseException e) {
e.printStackTrace();
return null;
}