Oracle正则表达式匹配空格

时间:2016-11-21 15:41:47

标签: regex oracle whitespace

我试图用正则表达式更改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 developer进行测试。

示例:

不工作:

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

工作:

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

1 个答案:

答案 0 :(得分:3)

由于install.packages('merTools')是类似Perl的构造而Oracle正则表达式基于POSIX,因此使用POSIX字符类\s(包括垂直空格)或[:space:]更安全(只匹配空格和标签。)

E.g。使用

[:blank:]

请记住在括号表达式中始终使用POSIX字符类(因此,要匹配一个字母字符,请使用([[:space:]0-9/:]+) ,即类的名称必须位于冒号和双方括号内。)