У меня проблема с пониманием регулярного выражения.
У меня есть следующая строка:
aaa'dd? D'ххх '
В этой строке
является разделителем подстроки и
является escape-символом для
.
В Oracle SQL у меня есть предложение, которое разбивает мою строку на подстроки на основе разделителя подстрок:
select replace(
regexp_substr(q'[aaa'dd?'d'xxx']', '(.*?[^?])(''|$)', 1, level, null, 1),
'?''',
'''') as result
FROM dual
connect by level <= regexp_count(q'[aaa'dd?'d'xxx']', '(.*?[^?])(''|$)');
В этом случае результат:
ааа
dd'd
ххх
... что правильно.
Моя проблема связана с тем, что я хочу изменить разделитель подстроки с
в
+
.
В этом случае основная строка становится
AAA + дд? + D + ххх +
Я изменил оператор SQL в:
SELECT REPLACE(
regexp_substr(q'[aaa+dd?+d+xxx+]', '(.*?[^?])(+|$)', 1, level, null, 1),
'?''',
'''') as result
FROM dual
connect by level <= regexp_count(q'[aaa+dd?+d+xxx+]', '(.*?[^?])(+|$)');
... и результат другой:
а
а
а
+
* * Д тысяча семьдесят-семь * * тысяча семьдесят восемь
* * Тысяча семьдесят-девять д
? +
* +1083 * д * 1 084 *
+
х
х
х
+
Можете ли вы указать мне, что я делаю неправильно в моем измененном сценарии, чтобы получить тот же результат, пожалуйста?