Как объединить несколько регулярных выражений в одно в SQLAlchemy? - PullRequest
1 голос
/ 16 октября 2019

Я пытаюсь удалить пробелы из столбца в таблице Postgres.
Для этого я использую SQLAlchemy.

Например, ' some value ' должно стать 'some value'.

Мой код:

sqlalchemy.func.regexp_replace(
                # replace whitespaces with a single space
                sqlalchemy.func.regexp_replace(source_column_instance, ' {2,}', ' ', 'g'),
                # also remove leading and trailing whitespaces
                '^ | $', '', 'g') 

Выше работает нормально, но я хочу объединить два регулярных выражения в одно.

1 Ответ

1 голос
/ 16 октября 2019

Вы можете использовать

sqlalchemy.func.regexp_replace(source_column_instance, '^ +| +$|( ){2,}', '\\1', 'g')

Здесь,

  • ^ + - соответствует 1 или более пробелам в начале строки
  • |- или
  • +$ - сопоставляет 1 или более пробелов в конце строки
  • | - или
  • ( ){2,} - сопоставляет и захватывает один пробелв группу 1 два или более раз.

Замена - \1, обратная ссылка на значение группы 1, поэтому в результате остается только один пробел, если было два или более пробелов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...