Django的无效正则表达式:无效的转义\序列

问题描述

我正在尝试使用__regex字段查找来过滤我的记录。在我开始使用unicode property组(\p{whatever})或letter组(\p{L})之前,它一直工作正常。我正在使用的数据库-Postgresql。我得到的代码如下:

f1 = Q(field__regex=r'[^\d\p{L}]anystr[^\d\p{L}]')
f2 = Q(field__regex=r'[^\d\p{L}]strany[^\d\p{L}]')
MyModel.objects.filter(f1 | f2)

启动此代码后,出现此错误

django.db.utils.DataError:无效的正则表达式:无效的转义\序列


我试图进行更深入的研究,未发现可能导致python代码出现问题的任何内容。最后一个例外是:django\db\backends\utils.py",line 86,in _execute,所以,我在此处放置了pdb。有2个变量,sqlparams

  • sql-包含未包含django的Q对象值的原始sql代码(由于%s的原因,它似乎将通过格式字符串添加
  • params-Q对象的值本身。在我的示例中是:
('[^\\d\\p{L}]anystr[^\\d\\p{L}]','[^\\d\\p{L}]strany[^\\d\\p{L}]')

1行之后,再次抛出上述异常。 但是,如果我粘贴Q生成值之一来搜索数据库本身,则不会看到错误

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)