Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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 Oracle与regext.com不同_Regex_Oracle_Oracle12c - Fatal编程技术网

REGEXP\u SUBSTR Oracle与regext.com不同

REGEXP\u SUBSTR Oracle与regext.com不同,regex,oracle,oracle12c,Regex,Oracle,Oracle12c,我在用这个正则表达式 #([^\s]*)# (在C#和工作罚款中) 但是使用Oracle中的REGEXP\u SUBSTR,我得到了一个不同的结果 SELECT REGEXP_SUBSTR('test #2 #123456789# #blabla #1','#([^#\s]*)#') from dual Oracle=#2# C#/regexr.com=#123456789# 有人知道如何在Oracle中获得相同的结果吗?您可以使用SUBSTR和INSTR的组合来获得所需的结果 查询 使用通

我在用这个正则表达式

#([^\s]*)#

(在C#和工作罚款中)

但是使用Oracle中的
REGEXP\u SUBSTR
,我得到了一个不同的结果

SELECT REGEXP_SUBSTR('test #2 #123456789#  #blabla #1','#([^#\s]*)#') from dual
Oracle=
#2#

C#/regexr.com=
#123456789#


有人知道如何在Oracle中获得相同的结果吗?

您可以使用
SUBSTR
INSTR
的组合来获得所需的结果

查询
使用通俗易懂的英语,应该遵循哪些规则才能获得所需的结果?您需要
#([^.[:space:]]*)
[^.\s]
匹配的字符不是
(而不是您期望的
或空白字符)。如果要匹配字符集中的空格,则需要使用POSIX表达式
[:space://code>,而不是PERL
\s
表达式。请描述如何返回结果?它是一个
#
分隔的字符串,您试图返回第三个字段吗?@ejeged OP要求的行为与;此正则表达式正在两个不以空格字符分隔的连续
#
之间查找子字符串。如前所述,这可以通过调整OP的查询来使用POSIX字符集
[:space:]
或仅使用非贪婪正则表达式
\S*?#
。这与硬编码不同,您需要第二个和第三个
之间的值。我对这个问题的解释是,字符串似乎是一个
分隔字符串,他们试图获取第三个字段。肯定需要问题作者的澄清。
WITH strings (str_val) AS (SELECT 'test #2 #123456789#  #blabla #1' FROM DUAL)
SELECT SUBSTR (str_val,
               instr(str_val, '#', 1,2),
               instr(str_val, '#', 1,3) - instr(str_val, '#', 1,2) + 1)
  FROM strings;