172 похожих чатов

В 14 postgres функция regexp_replace и regexp_match неверно обрабатывают комбинацию .*?

и .+?
нежадный алгоритм работает как жадный.
Проверил онлайн на 2х сайтах - выражение составил верное

10 ответов

21 просмотр

судя по примеру — это таки жадное выражение

Это вы решили маскировать данные в JSON через regexp'ы ? ;)

Ildar-Garaev Автор вопроса
Ildar Garaev
да :)

А это читали? Приведите пример куска JSON где есть ключ, значение которого надо скрыть (чувствительные данные замажьте), попробую помочь вам с regexp'ами если вы непременно их желаете.

Ildar Garaev
а где тут JSON

Не понял вопроса. Вы о том, что там речь о JSONB идет? Так всё это и для JSON применимо, за очень небольшим исключением.

Просто для информации: PostgreSQL использует собственный движок "регулярок", его поведение резко отличается от "привычных" (PCRE и т.п.) в нетривиальных случаях, поэтому: . Выражение Вы составили неверное (в PostgreSQL оно жадное, строго по документации). . Поэтому все "онлайн сайты" — мимо. . Какие на самом деле синтаксис и семантика "регулярок" в PostgreSQL — см. именно его документацию.

Ildar-Garaev Автор вопроса
Yaroslav Schekin
Просто для информации: PostgreSQL использует собст...

я нашел уже как надо. Если жадное первое выражение до оно автоматом делает всех жадными на этом уровне. Я переписал и все получилось. Но это конечно не однозначное поведение

Ildar Garaev
я нашел уже как надо. Если жадное первое выражение...

Да поведение-то совершенно однозначное и логичное, как раз... но есть один нюанс: "The main problem with pg's regex engine is how it handles non-greedy constructs — it has a rule for how they should work which is simple and consistent and which always does nothing like what you actually want." © RhodiumToad

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
Карта сайта