簡體   English   中英

如何在Java中使用正則表達式從String獲取日期?

[英]how can I get the date from String using regex in java?

這是我的代碼:

String t1="postby <span title=\"2011-4-5 17:22\">yesterday&nbsp;17:22</span>";
String t2="postby 2010-11-12 10:02";

我想使用一個正則表達式從t1t2獲得2011-4-5 17:22 : 2010-11-12 10:02

(輸入t1t2 ,輸出日期)

怎么做? (請給我一些示例代碼,謝謝)

\d{4}-\d{1,2}-\d{1,2} \d{2}:\d{2}

一些注意事項:

  • 您將必須在字符串中轉義斜線: String pattern = "\\\\d{4}-\\\\d{1,2}....."
  • \\d表示“數字”(0-9)
  • {x}表示“ x次”
  • {x,y}表示“至少x,但不超過y次”

參考: java.util.regex.Pattern

您允許多少次假匹配? 博zh 已經提出了模式

\d{4}-\d{1,2}-\d{1,2} \d{2}:\d{2}

但這與以下可疑情況匹配: 0000-1-1 00:00 (沒有零年), 2011-0-1 00:00 (沒有零月), 2011-13-1 00:00 (沒有是沒有月13日), 2011-1-32 00:00 (沒有月日32), 2011-12-31 24:00 (最多只有leap秒)和2011-12-31 23:61 (最多有一個飛躍)。

您想解析幾乎但不是完全以ISO-8601格式顯示的日期時間。 如果可以, 使用該國際標准格式。

在我的程序之一(使用grep的shell腳本)中,我使用了以下正則表達式:

^20[0-9][0-9]-[01][0-9]-[0-3][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9]UTC$

我有一個額外的TUTC可以處理,只對本世紀的日期感興趣,並且以秒為單位進行解析。 我看到我對小時和分鍾值的限制不是那么嚴格,可能是因為傳統的C / C ++轉換可以處理它們。

我想您因此可以使用以下內容:

\d{4}-[01]\d-[0-3]\d [0-2]\d:[0-6]\d

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM