У меня есть строка, которую я хотел бы преобразовать из последовательности строк в последовательность строк, разделенных дефисом.Пример
200400116828 --> 2004-001168-28
Для преобразования строки входная строка должна соответствовать следующим правилам:
- Starts with a 1 or 2
- Followed by three digits
- Followed by 6 digits
- Followed by 2 digits
Я использую регулярное выражение для извлечения вышеуказанных групп из входной строки для построения выходных данных.строка с использованием регулярного выражения '^([12]\d{3})(\d{6})(\d{2})$
'
Мне удалось заставить его работать, используя следующий запрос:
Select REGEXP_REPLACE(
'200400116828','^([12]\d{3})(\d{6})(\d{2})$','\1-\2-\3'
) from dual;
Вывод - 2004-001168-28
Но меня смущает, что следующий запрос также работает, но с неправильным выводом:
Select REGEXP_REPLACE(
'200400116828','^([12]\d{3})(\d{6})(\d{2})$','\10-\11-\12'
) from dual;
Вывод - 20040-20041-20042
Может кто-нибудь объяснить, пожалуйста,вывод 2-го запроса, потому что для меня это не соответствует RegEx обеспечить.