2013-09-25 53 views
1

嗨,大家好我對正則表達式的問題,你能不能幫我從文本中提取日期,如:PostgreSQL的正則表達式替換文本字段

Start 20130918 14:35:00 

餘萬隻從文本中提取20130918。 我已經試過這樣的事情:

regexreplace(Start('\s+\w{5}\d{8}\s','')) 
+0

你說你要提取的日期,但你卻用一個空字符串替換除了時間的一切,什麼是你想實現什麼呢? –

+0

我想從文本中提取僅日期,刪除起點和時間。 – Car

回答

2

您可以使用下面的表達式匹配行:

Start\s+([0-9]{8})\s.* 

,然後替換字符串:\1

注:您可能需要加倍逃脫如果傳遞的表達式作爲字符串每個反斜槓,所以你可能需要使用:

Start\\s+([0-9]{8})\\s.* 

編輯:您可以使用下面的語句:

SELECT regexp_replace('Start 20130918 14:35:00','Start\s+([0-9]{8})\s.*','\1') 

,這裏是一個SQL Fiddle Demo

+0

但是當我這樣做,我只得到輸出開始。 – Car

+0

SELECT REGEXP_REPLACE( '開始20130918 14時35分00秒', '\ W {5} \ S +([0-9] {7})\ S *', '') – Car

+0

和與此我得到輸出時間,對我來說,只提取日期有點困難,其餘的刪除。 – Car

4

最好使用比子爲regex_replace這種類型的問題:

select substring('Start 20130918 14:35:00' from '[0-9]{8}') 
+0

比接受的答案更簡單。 – aviad