Лукап iregex

Лукап iregex применяется к QuerySet и возвращает новый QuerySet, содержащий объекты, которые соответствуют переданному регулярному выражению без учета регистра. Данный лукап работает только с базами данных PostgreSQL, так как использует оператор ~*. Аргумент передается в виде строки с регулярным выражением, где ключ - имя поля с оператором iregex, а значение - строка регулярного выражения.

Синтаксис

pythonModel.objects.filter(field__iregex='pattern')

Пример

Давайте найдем все статьи, заголовки которых содержат слово "django" (в любом регистре):

pythonfrom myapp.models import Article

articles = Article.objects.filter(title__iregex=r'\mdjango\M')
for article in articles:
  print(article.title)

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

python"Django для начинающих"
"Уроки по DJANGO"
"django ORM"

Пример

Давайте найдем пользователей, у которых email заканчивается на ".ru" или ".com" (без учета регистра):

pythonfrom myapp.models import User

users = User.objects.filter(email__iregex=r'\.(ru|com)$')
for user in users:
  print(user.email)

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

python"ivan@mail.ru"
"petr@yandex.RU"
"alex@google.COM"
"john@example.com"

Пример

Давайте найдем категории, названия которых содержат цифры от 0 до 9:

pythonfrom myapp.models import Category

categories = Category.objects.filter(name__iregex=r'\d+')
for category in categories:
  print(category.name)

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

python"Категория 1"
"Раздел 2"
"Тема 2025"

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

  • лукап regex,
    который выполняет поиск по регулярному выражению с учетом регистра
  • лукап contains,
    который выполняет поиск по подстроке с учетом регистра
  • лукап icontains,
    который выполняет регистронезависимый поиск по подстроке
  • лукап startswith,
    который проверяет начало строки на совпадение