2013-09-25 3 views
1

Привет ребят У меня есть вопрос о регулярных выражениях, вы можете мне помочь извлечь дату из текста, как:Postgresql Regex заменить текстовое поле

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.* 

EDIT: Вы можете использовать следующее заявление :

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

и здесь является SQL Fiddle Demo

+0

Но когда я это делаю, я получаю только вывод Start. – Car

+0

SELECT regexp_replace ('Start 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

Смежные вопросы