Я хочу сопоставить по регулярному выражению, но получить его подстроку.
Например, я хотел бы получить строковые литералы во входной строке без двойных кавычек
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