Лукап regex
Лукап regex применяется в запросах к базе данных и позволяет отфильтровать записи, у которых значение поля соответствует заданному регулярному выражению. Данный оператор поиска регистрозависимый, то есть учитывает регистр символов при сравнении. Для регистронезависимого поиска используется лукап iregex. В качестве значения передается строка с регулярным выражением, синтаксис которого зависит от используемой базы данных.
Синтаксис
Model.objects.filter(field__regex=r'regex_pattern')
Пример
Давайте найдем все статьи, заголовок которых начинается с буквы "A" (регистр учитывается):
from myapp.models import Article
articles = Article.objects.filter(title__regex=r'^A.*')
for article in articles:
print(article.title)
Результат выполнения кода:
"Article about Django"
"Another interesting post"
Пример
Теперь найдем статьи, заголовок которых заканчивается на цифру:
from myapp.models import Article
articles = Article.objects.filter(title__regex=r'.*\d$')
for article in articles:
print(article.title)
Результат выполнения кода:
"Post 2025"
"Chapter 7"
Пример
Найдем пользователей, у которых имя начинается с "J" и заканчивается на "n":
from myapp.models import User
users = User.objects.filter(username__regex=r'^J.*n$')
for user in users:
print(user.username)
Результат выполнения кода:
"John"
"Jason"