Лукап regex

Лукап regex применяется в запросах к базе данных и позволяет отфильтровать записи, у которых значение поля соответствует заданному регулярному выражению. Данный оператор поиска регистрозависимый, то есть учитывает регистр символов при сравнении. Для регистронезависимого поиска используется лукап iregex. В качестве значения передается строка с регулярным выражением, синтаксис которого зависит от используемой базы данных.

Синтаксис

pythonModel.objects.filter(field__regex=r'regex_pattern')

Пример

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

pythonfrom myapp.models import Article

articles = Article.objects.filter(title__regex=r'^A.*')
for article in articles:
  print(article.title)

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

python"Article about Django"
"Another interesting post"

Пример

Теперь найдем статьи, заголовок которых заканчивается на цифру:

pythonfrom myapp.models import Article

articles = Article.objects.filter(title__regex=r'.*\d$')
for article in articles:
  print(article.title)

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

python"Post 2025"
"Chapter 7"

Пример

Найдем пользователей, у которых имя начинается с "J" и заканчивается на "n":

pythonfrom myapp.models import User

users = User.objects.filter(username__regex=r'^J.*n$')
for user in users:
  print(user.username)

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

python"John"
"Jason"

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

  • лукап iregex,
    который выполняет поиск по регулярному выражению без учета регистра
  • лукап contains,
    который выполняет поиск по подстроке с учетом регистра
  • лукап icontains,
    который выполняет поиск по подстроке без учета регистра
  • метод filter,
    который применяет условия фильтрации к QuerySet