2016-11-21 77 views
2

我想在oracle中更改值與正則表達式:甲骨文正則表達式匹配的空白

input: <input id="f_alta">13/10/2016 10:10:10</input> 
output: 13/10/2016 10:10:10 

好,讓我使用節點內:([\ s0-9 /:] +)但沒有工作,反正我用:([0-9 /:] +)和工程,爲什麼不與第一個工作?

我正在使用oracle sql開發人員進行測試。

實施例:

不工作:

select REGEXP_REPLACE('<input id="f_alta">13/10/2016 10:10:10</input>', '<input id="f_alta">([\s0-9/:]+)</input>', '\1') from dual 

WORKING:

select REGEXP_REPLACE('<input id="f_alta">13/10/2016 10:10:10</input>', '<input id="f_alta">([ 0-9/:]+)</input>', '\1') from dual 
+2

那麼,可能需要使用POSIX字符類:'([[:space:] 0-9 /:] +)' –

+0

它的工作原理,請寫一個響應 – ZiTAL

回答

2

由於\s是一個Perl樣構建和Oracle的正則表達式是基於POSIX,它是使用更安全POSIX字符類[:space:](包括垂直空格)或[:blank:](僅用於匹配空格和製表符)。

E.g.使用

([[:space:]0-9/:]+) 

記住,總是使用括號表達式內POSIX字符類(因此,爲了匹配一種α-字符,使用[[:alpha:]],即類的名字必須是內部冒號和雙方括號中)。