2011-04-06 17 views
0

這裏是我的代碼:如何從java中使用正則表達式獲取String的日期?

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

我想獲得2011-4-5 17:222010-11-12 10:02t1t2,用一個正則表達式

(輸入t1t2,輸出日期)

怎麼辦? (請給我一些示例代碼,謝謝)

回答

7
\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

+0

優秀。爲了使它更安全,可以在開始和結束時添加\ b。 – Ingo 2011-04-06 11:44:02

1

有多少虛假的比賽,你會允許? Bozho already suggested模式

\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(最多有一次閏秒)和2011-12-31 23:61(最多隻有一次飛躍)。

你想解析的日期時間是差不多,但不完全,在ISO-8601 format。如果可以,使用該國際標準格式。

在我的項目之一(使用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 
相關問題