Python Django查询集中的正则表达式

Python Django查询集中的正则表达式,python,regex,django,Python,Regex,Django,我正在尝试编写一个Django查询,它将根据特定的正则表达式模式进行过滤 我想通过一个代码进行过滤,该代码提取出任何情况,其中有任何非数字字符后跟一个数字,后跟一个非数字字符(空格可以) 只需说一些代码是AJDP8EP、jsif28EP、EROE88、oskdpoeks8 所以我希望我的结果返回:AJDP8EP,oskdpoeks8 这是我的问题,但它没有正确地识别事物。数字是一个变量 results = Book.objects.filter(author__contains = firstn

我正在尝试编写一个Django查询,它将根据特定的正则表达式模式进行过滤

我想通过一个代码进行过滤,该代码提取出任何情况,其中有任何非数字字符后跟一个数字,后跟一个非数字字符(空格可以)

只需说一些代码是AJDP8EP、jsif28EP、EROE88、oskdpoeks8

所以我希望我的结果返回:
AJDP8EP,oskdpoeks8

这是我的问题,但它没有正确地识别事物。数字是一个变量

results = Book.objects.filter(author__contains = firstname,type = "Fiction").filter(code__regex = r'^(\D+)(number)(\D+)')

不能在引用的正则表达式中使用变量。尝试连接字符串,如:

r“^(\D+)(+str(数字)+”)(\D+)”

这会将您的
编号
变量转换为字符串,以防它尚未转换为字符串

此外,正如您的问题的一条评论所指出的,
oskdpoeks8
将与您的模式不匹配。如果您想抓住代码末尾可能出现
number
的情况,一种解决方案是:

r“^(\D+)(+str(数字)+”)(\D*)”


请注意,将
+
替换为
*
,以捕获零次出现的情况。

如何将
oskdpoeks8
与您的模式匹配?它在
8
之后缺少空格或数字。另外,您的筛选器返回什么?我的模式是非数字数字后跟数字数字后跟非数字数字或空格。仅返回空列表。但肯定有与此代码匹配的记录。