我尝试使用REGEXP_SUBSTR从字符串中提取非空格字符。
我使用此正则表达式\s*([^\s]*)\s*
并提取第一组
使用\s
表示文本中的空格
here删除了前导空格,但保留了一次训练。
select '"'||REGEXP_SUBSTR( ' xxx ', '\s*([^\s]*)\s*', 1, 1, NULL, 1 )||'"' AS text
from dual;
"xxx "
只有当我按照10g的文档切换到POSIX语法时,才会得到预期的结果。
select '"'||REGEXP_SUBSTR( ' xxx ', '\s*([^[:space:]]*)[:space:]*', 1, 1, NULL, 1 )||'"' AS text
from dual;
"xxx"
我做错了什么?
我在12.1.0.2.0
NLS_CHARACTERSET WE8MSWIN1252
答案 0 :(得分:1)
[^\s]
不正确,您无法在[]
内使用反斜表组。
documentation明确指出
在列表中,除这些之外的所有运算符都被视为文字
范围运算符: -
POSIX字符类:[::]
POSIX校对元素:[。 ]
POSIX字符等值类:[= =]
所以\
意味着[]