2016-11-21 78 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:]],即类的名字必须是内部冒号和双方括号中)。