РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
486 of 711 menu

Метод regexp_replace

Метод regexp_replace класса ColumnElement создает SQL-выражение для замены подстроки, соответствующей регулярному выражению. Первым параметром метод принимает шаблон регулярного выражения, вторым - строку замены. Дополнительно можно передать флаги сопоставления.

Синтаксис

ColumnElement.regexp_replace(pattern, replacement, [flags])

Пример

Давайте создадим таблицу articles и выполним замену подстроки в колонке title:

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, select engine = create_engine('sqlite:///:memory:') metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), ) metadata.create_all(engine) with engine.connect() as conn: conn.execute(articles.insert(), [ {'id': 1, 'title': 'article one'}, {'id': 2, 'title': 'article two'}, ]) res = conn.execute( select(articles.c.title.regexp_replace('article', 'post')) ) print(res.fetchall())

Результат выполнения кода:

[('post one',), ('post two',)]

Пример

Давайте выполним замену с использованием групп захвата в регулярном выражении:

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, select engine = create_engine('sqlite:///:memory:') metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), ) metadata.create_all(engine) with engine.connect() as conn: conn.execute(articles.insert(), [ {'id': 1, 'title': 'article 2024'}, ]) res = conn.execute( select(articles.c.title.regexp_replace('(\\d+)', 'year-\\1')) ) print(res.fetchall())

Результат выполнения кода:

[('article year-2024',)]

Пример

Давайте применим метод к строковому литералу напрямую:

from sqlalchemy import literal expr = literal('user name').regexp_replace('\\s+', '_') print(expr)

Результат выполнения кода:

"regexp_replace(:param_1, :param_2, :param_3)"

Итоговый SQL запрос:

SELECT regexp_replace(?, ?, ?) AS regexp_replace_1

Смотрите также

  • класс ColumnElement,
    который представляет элемент SQL-выражения
  • метод regexp_match,
    который выполняет поиск по регулярному выражению
  • метод like,
    который выполняет поиск по шаблону
  • метод concat,
    который объединяет строки
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить