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
。另外,请检查“解释”正则表达式,例如:您的和表达式。