powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / распарсить не строгую строку на столбцы
3 сообщений из 3, страница 1 из 1
распарсить не строгую строку на столбцы
    #39778774
Vladas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть слабо структурированный текст

Код: sql
1.
2.
select '2019-01-01,00100123,"текст1 может, содержать, зяпятые",3.000,' union all
select '2019-01-01,00100124,текст2 может содержать зяпятые,"8,336.000"'



как его распарсить по отдельный столбцам:
Код: plaintext
1.
2.
-------------------------------------------------------------------------------
2019-01-01|00100123|текст1 может, содержать, зяпятые|3.000
2019-01-01|00100124|текст2 может не содержать зяпятые|8336.000

понимаю что нужно смотреть в сторону ф-ций с регулярными выражениями, но что то не получается...

спасибо
...
Рейтинг: 0 / 0
распарсить не строгую строку на столбцы
    #39789760
Vladas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
экспериментирую с функцией regexp_replace():
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT regexp_replace( a.c1, '(".*),(.*")', '\1;\2', 'g') c2
from (select '2019-01-01,00100123,"текст1 может, содержать, запятые",3.000,' c1 union
      select '2019-01-01,00100124,текст2 может содержать запятые,"8,336.000"')  a

----
2019-01-01,00100123,"текст1 может, содержать; запятые",3.000,
2019-01-01,00100124,текст2 может содержать запятые,"8;336.000"


но замена происходит только 1 раз, ближе к концу строки, не смотря на выставленный флаг 'g'
Как изменить выражение, что бы замена происходила во всех местах строки?
...
Рейтинг: 0 / 0
распарсить не строгую строку на столбцы
    #39789853
maxkar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladas,

У вас жадные группы. Т.е., .* пытается съесть все, что можно (но так, чтобы строка все равно соответствовала выражению). Поэтому нужно либо ограничивать символы (вместо точки использовать "множество символов" с ислючением запятой или кавычки, например). Или можно поэкспериментировать с ленивыми (non-greedy) квантификаторами, смотрите таблицу 9.16 здесь .
Больше теории можно посмотреть, например, здесь .
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / распарсить не строгую строку на столбцы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]