[英]Regex in Django query set
我正在嘗試編寫一個 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(number) + ")(\\D+)"
這會將您的number
變量轉換為字符串,以防它已經存在。
另外,如您對問題的評論之一所示, oskdpoeks8
將與您的模式不匹配。 如果你想捕到代碼末尾可能出現number
情況,一個解決方案是:
r"^(\\D+)(" + str(number) + ")(\\D*)"
注意用*
替換+
以捕獲零次出現的情況。
使用 python 3+,您可以使用 f-strings 將變量傳遞給正則表達式並在查詢中使用它們。 例如:
Car.objects.filter(
car_code=rf'^{settings.SOME_SETTING}0*(\d+)$'
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.