Skip to content

Transformation text

levinsv edited this page Dec 3, 2024 · 7 revisions

Преобразование выделенного текста или текста из буфера обмена.

Диалог вызывается нажатием Ctrl+M в инструменте запросов.

Схема работы:

В тексте находятся фрагменты PCRE regexp и формируется новый тест из Replace expression. Для подстановки найденных групп используется \g{номер_группы} можно использовать \r\n. Исходный текст разбивается на строки только если символы перевода строк не вошли в искомый текст. Если строки найдены, то перед и после каждой можно дополнительно добавить поля Append before row After row. (В After row можно использовать \r\n). Если в строке содержится несколько найденных фрагментов, то между ними добавляется Field separator.

Пример:

image

Желтым цветом выделяется выражение не входящее ни одну группу. Выражение \g{0} ссылается на всё найденное PCRE выражение.

Кнопка "копировать" копирует измененный текст в буфер. Значение полей можно сохранять именным набором (конфигурация). И в дальнейшем загружать. В секции dlgTransformText файла pgadmin3opt.json сохраняются настройки GUI и сохранённые конфигурации полей. Поля Rows limit Chars limit ограничивают количество строк или символов в Transform text. Установленный флаг Refresh Highlight позволяет видеть результаты во время ввода символов в поля PCRE regexp и Replace expression.

Подсветка синтаксиса PCRE выражений похожа на https://regex101.com. Использована грамматика PCRE https://github.com/bkiers/pcre-parser/blob/master/src/main/antlr4/nl/bigo/pcreparser/PCREParser.g4

Дополнение внесенное commit (https://github.com/levinsv/pgadmin3/commit/feaaf49bc607e9eaa8bbd5a6b60eeffad09ccdc0).
Пример:
image