27đź‘Ť
Use “\y” instead of “\b” when you’re using PostgreSQL, this is because Django passes your regular expression straight down to PostgreSQL – so your RegEx’s need to be compatible with it. You should be able to execute them from psql
without any problems.
result = Model.objects.filter(text__iregex=r"\y{0}\y".format(stringVariable))
See https://www.postgresql.org/docs/9.1/functions-matching.html#POSIX-CONSTRAINT-ESCAPES-TABLE
0đź‘Ť
You might be able to get something by dropping the regex and using a few django lookups
result = Model.objects.filter(Q(text__contains=' someword ') |
Q(text__contains=' someword.') |
Q(text__istartswith = 'someword.' |
Q(text__istartswith = 'someword.' |
Q(text__iendswith = 'someword')
see here for docs.
I realize that’s not so elegant (but makes for easy maintenance if you’re not a fan of regex).
- IPython doesn't work in Django shell
- Found another file with the destination path – where is that other file?
0đź‘Ť
I had the same problem trying to match word boundaries using the Perl-compatible escape sequence \b. My backend database is MySQL.
I solved the problem by the character class expression [[:space:]], e.g.
q_sum = Q()
search_list = self.form.cleaned_data['search_all'].split(' ');
for search_item in search_list:
search_regex = r"[[:space:]]%s[[:space:]]" % search_item
q_sum |= Q(message__iregex=search_regex)
queryset = BlogMessages.objects.filter(q_sum).distinct()
- HTML input textbox in Django admin.py filter
- Django: How do I use a string as the keyword in a Q() statement?
- Django/Celery multiple queues on localhost – routing not working
- Django: authenticating against remote LDAP user – simple example?