Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
REGEXP\u SUBSTR中\s和[:space:]之间的差异_Regex_Oracle - Fatal编程技术网

REGEXP\u SUBSTR中\s和[:space:]之间的差异

REGEXP\u SUBSTR中\s和[:space:]之间的差异,regex,oracle,Regex,Oracle,我尝试使用REGEXP\u SUBSTR从字符串中提取非空白字符 我使用这个正则表达式\s*([^\s]*)\s*并提取第一个组 使用\s表示文档中的空白 删除前导空格,但保留一次训练 select '"'||REGEXP_SUBSTR( ' xxx ', '\s*([^\s]*)\s*', 1, 1, NULL, 1 )||'"' AS text from dual; "xxx " 只有当我切换到POSIX语法时,我才能得到预期的结果 select '"'||REGEXP_

我尝试使用REGEXP\u SUBSTR从字符串中提取非空白字符

我使用这个正则表达式
\s*([^\s]*)\s*
并提取第一个组

使用
\s
表示文档中的空白 删除前导空格,但保留一次训练

 select  '"'||REGEXP_SUBSTR( ' xxx  ', '\s*([^\s]*)\s*', 1, 1, NULL, 1 )||'"' AS text
 from dual;

 "xxx  "
只有当我切换到POSIX语法时,我才能得到预期的结果

 select  '"'||REGEXP_SUBSTR( ' xxx  ', '\s*([^[:space:]]*)[:space:]*', 1, 1, NULL, 1 )||'"' AS text
 from dual;

 "xxx"
(我)做错了什么

我是12.1.0.2.0


NLS_字符集WE8MSWIN1252不正确,您不能在
[]
内使用反斜杠组

报告明确指出

在列表中,除这些运算符外的所有运算符都被视为文本

靶场操作员:-

POSIX字符类:[::]

POSIX排序元素:[..]

POSIX字符等价类:[=]


所以
\
意味着它本身在
[]

你可以使用
\s
[]
@MarmiteBomber内部,这很好。问题是,
[^\s]
实际上匹配了除“\”和“s”之外的所有内容,即包括剩余的空白。@Zbynek谢谢你的观点,我正试图在Oracle文档中找到一个澄清,但运气不好。@MarmiteBomber:你应该检查一下。@Zbynek你是对的+1。此
选择REGEXP_SUBSTR('xxxssss','([^\s]*).*',1,1,NULL,1)作为dual中的文本
仅返回xxx。无论如何,我认为这是特定于Oracle实现的,如果是这样,您可以限制您的答案。在提供了澄清行为的文档链接后,我将接受。您检查过这个吗?Is表示“不支持多语言增强功能”。
select'| | REGEXP|u SUBSTR('xxx','\s*(\s*)\s*',1,1,NULL,1)| |'“,作为dual中的文本
@MTO感谢您提供了不错的选择,但问题是\s在非匹配字符列表中的用法。我被公认的答案弄糊涂了。这是简单的错误还是某种延伸?