正則匹配時間格式

2021-10-02 01:52:13 字數 2724 閱讀 5204

**是從專案裡抽出來的,沒有細整理。應用場景是在碼值翻譯的時候,需要把不同格式的時間翻譯一下。我們的專案是匯入zip包,儲存老資料,思路是先去判斷xml檔案裡面的時間是什麼格式的,然後根據具體的格式轉換。

docking annotation = field.getannotation(docking.class);

string format = annotation.dateformat();

if (value.trim().length() == 10) else if (value.trim().length() == 8) else if (value.trim().length() == 4) else if (value.trim().length() == 6) else if (value.trim().length() == 19)

date date = dateutil.stringtodateformat(value, format);

field.set(t, date);

public static date stringtodateformat(string date, string format) throws exception[1-9]|[0-9][1-9][0-9]|[0-9][1-9][0-9]|[1-9][0-9])" +

"(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|" +

"(02(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9])(0[48]|[2468][048]|[13579][26])|" +

"((0[48]|[2468][048]|[3579][26])00))0229))([0-1]?[0-9]|2[0-3])([0-5][0-9])([0-5][0-9])$";

if(pattern.matches(ymdhms, date))

// 精確到日即可,即年月日,格式:yyyymmdd,例如:20161213

string ymd = "^((([0-9][1-9]|[0-9][1-9][0-9]|[0-9][1-9][0-9]|[1-9][0-9])(((0[13578]|1[02])" +

"(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9])" +

"(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))0229))$";

if(pattern.matches(ymd, date))

// 精確到日即可,即年月日,格式:yyyy-mm-dd,例如:2016-12-13

string ymd2 = "^((([0-9][1-9]|[0-9][1-9][0-9]|[0-9][1-9][0-9]|[1-9][0-9])-(((0[13578]|1[02])" +

"-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|" +

"((([0-9])(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29))$";

if(pattern.matches(ymd2, date))

// 校驗時分秒:格式:hhmmss

string hms = "([0-1]?[0-9]|2[0-3])([0-5][0-9])([0-5][0-9])$";

if(pattern.matches(hms, date))

// 校驗時分秒:格式:hh-mm-ss

string hms2 = "([0-1]?[0-9]|2[0-3])-([0-5][0-9])-([0-5][0-9])$";

if(pattern.matches(hms2, date))

string hms3 = "([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$";

if(pattern.matches(hms3, date))

// 校驗 yyyy-mm-dd hh:mm:ss(日期和時間之間有乙個或多個空格)

string defaultformat = "^((([0-9][1-9]|[0-9][1-9][0-9]|[0-9][1-9][0-9]|[1-9][0-9])-" +

"(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|" +

"(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9])(0[48]|[2468][048]|[13579][26])|" +

"((0[48]|[2468][048]|[3579][26])00))-02-29))\\s+([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$";

if(pattern.matches(defaultformat, date))

date date1 = null;

try catch (exception e)

return date1;

}

正則匹配護照格式

美國 英國護照號碼 9 位數字 加拿大護照 2 個字母加 6 個數字 法國護照 2 個數字加 2 個字母加 5 個數字 義大利護照 2 個字母加 7 個數字 西班牙護照 3 個字母加 6 個數字 德國護照 9 個字元,由 2 3 個數字與 6 7 個字母混排,頭尾是字母。或者單純為 9 個數字 de...

Python 正則匹配文字中的時間串

text 現在是北京時間2020 3 16 2020年3月16日 2020.3.16 13 00 re.findall d年 d月 d日 text 2020年3月16日 re.findall d d d text 2020 3 16 re.findall d 年 d 月 d 日 text 2020 ...

時間格式的正規表示式

日期格式yyyy patternsdict.date y d 日期格式yyyy mm patternsdict.date ym d 0 d 1 0 2 日期格式yyyy mm dd patternsdict.date ymd d 0 d 1 0 2 0 d 12 d 3 01 時間格式hh patt...