-
oracle正则表达式匹配空格
本文介绍了Oracle正则表达式匹配空格的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试使用正则表达式更改 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
推荐答案
由于 \s
是一个类似 Perl 的结构,而且 Oracle 正则表达式是基于 POSIX 的,所以使用 POSIX 字符类更安全[:space:]
(包括垂直空格)或 [:blank:]
(仅匹配空格和制表符).
例如使用
([[:space:]0-9/:]+)
记住始终在方括号表达式中使用 POSIX 字符类(因此,要匹配一个字母字符,请使用 [[:alpha:]]
,即类的名称必须在冒号和双引号内方括号).