【发布时间】:2020-04-24 14:08:57
【问题描述】:
我想通过正则表达式匹配但得到它的子字符串。
例如,我想在输入字符串中获取不带双引号的字符串文字
DECLARE
TYPE STRING_TABLE_TYPE IS TABLE OF VARCHAR2(32000) INDEX BY BINARY_INTEGER;
string_table_ STRING_TABLE_TYPE;
input_string_ VARCHAR2(32000);
regex_pattern_ VARCHAR2(2000);
BEGIN
regex_pattern_ := '"[^\"]*"';
input_string_ := '{"ID", type date},
{"Reporting Date", type date},
{"Reporting Month No", Int64.Type},
{"Reporting Quarter", Int64.Type}';
-- Extract substrings
SELECT REGEXP_SUBSTR(input_string_, regex_pattern_, 1, LEVEL, 'inm') text
BULK COLLECT INTO string_table_
FROM DUAL
CONNECT BY REGEXP_SUBSTR(input_string_, regex_pattern_, 1, LEVEL, 'inm') IS NOT NULL;
-- Printout result
IF string_table_(1) IS NOT NULL THEN
FOR i_ IN 1..string_table_.COUNT LOOP
dbms_output.put_line(string_table_(i_));
END LOOP;
ELSE
dbms_output.put_line('No substrings found!');
END IF;
END;
我得到的输出是:
"ID"
"Reporting Date"
"Reporting Month No"
"Reporting Quarter"
我想知道是否有正则表达式模式以便我直接得到这个
ID
Reporting Date
Reporting Month No
Reporting Quarter
【问题讨论】:
-
您应该在这里使用 Oracle 的 JSON 函数,而不是正则表达式。
-
@TimBiegeleisen 这不是真正的 JSON...
-
这个例子是虚构的,这里只关注正则表达式。
-
我可以在正则表达式中使用某种前瞻或回溯功能吗?