Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/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
Oracle 下面的REGEXP\u REPLACE如何工作?_Oracle - Fatal编程技术网

Oracle 下面的REGEXP\u REPLACE如何工作?

Oracle 下面的REGEXP\u REPLACE如何工作?,oracle,Oracle,我在我的项目中有一个查询,那就是使用REGEXP\u REPLACE 我试图通过搜索找到它是如何工作的,但我发现它就像 w+匹配一个单词字符(即字母数字或下划线) (uu)字符) 但无法找到“\w+\”:“为什么使用这些”,以及“{124;}}”的含义是什么,“ 您能告诉我它是如何工作的吗?示例::REGEXP\u REPLACE(字符串、模式[、替换字符串[、起始位置[、第n个外观[、匹配参数]]]) |是或(可以表示多个备选方案),至少在{n,}中是至少n次 “我从哪里得到我的信息” “\

我在我的项目中有一个查询,那就是使用
REGEXP\u REPLACE
我试图通过搜索找到它是如何工作的,但我发现它就像

w+匹配一个单词字符(即字母数字或下划线) (uu)字符)

但无法找到
“\w+\”:“
为什么使用这些
,以及
“{124;}}”的含义是什么,“

您能告诉我它是如何工作的吗?

示例::REGEXP\u REPLACE(字符串、模式[、替换字符串[、起始位置[、第n个外观[、匹配参数]]])

|是或(可以表示多个备选方案),至少在{n,}中是至少n次

“我从哪里得到我的信息”

“\w+\”:“为什么使用这些”“以及“{124;}}”是什么意思?” 匹配一个单词字符(\w)一次或多次(+)这必须弄糟它缺少适当数量的右括号,因为它放了“w+”
他们允许“待展示。此表达式接受一个表达式更改,然后将其用作下一个更改的基础。祝你好运,把剩下的都搞定。正则表达式还不错,只要你掌握了基本知识,它就相当直观了

这似乎是一个正则表达式,用于从JSON字符串中剥离键和括号-不幸的是,如果是这种情况,那么它并不适用于所有情况

正则表达式

'"\w+\":'
将匹配:

  • A
    双引号
  • \w+
    一个或多个单词(
    a-z
    a-z
    0-9
    )字符
  • \”
    另一个双引号-注意:
    \
    字符不是必需的;然后
  • A
    冒号
因此:

将输出:

{"value","value with \"quote"}
value,value with \quote
第二个模式将匹配一个
{
,或一个
}
或一个
字符(可以等价地写成
[{}]
),因此:

将输出:

{"value","value with \"quote"}
value,value with \quote
这很好,直到(像我的例子)在值字符串中有一个转义双引号(或大括号);在这种情况下,它们也会被剥离,留下转义字符

(注意:您通常不会发现这一点,但可以在键中包含转义引号。因此,
{“keywith\”:quote:“value”}
将替换为
{quote:“value”}
,然后替换为
quote:value
,这不是预期的输出。)

如果您正在尝试解析JSON(在Oracle 12之前),那么您可以使用:

REGEXP_REPLACE(
  '{"key":"value","key2":"value with \"quote","keywith\":quote":"value with \"{}"}',
  '^{|"(\\"|[^"])+":(")?((\\"|[^"])+?)\2((,)|})',
  '\3\6'
 )
哪些产出:

value,value with \"quote,value with \"{}
VALUE
-----------------
value
value with "quote
value with "{}
或者在Oracle 12中,您可以执行以下操作:

SELECT *
FROM   JSON_TABLE(
         '{"key":"value","key2":"value with \"quote","keywith\":quote":"value with \"{}"}',
         '$.*' NULL ON ERROR
         COLUMNS (
           value VARCHAR2(4000) PATH '$'
         )
       )
哪些产出:

value,value with \"quote,value with \"{}
VALUE
-----------------
value
value with "quote
value with "{}

这里有多个问题。请,(查找
\
),然后在示例数据上尝试使用
regexp\u replace
。另外,请检查“解释”正则表达式,例如:您的和表达式。