簡體   English   中英

Django的查詢集正則表達式提供額外的結果

[英]django query-set regex giving extra results

我正在嘗試對Django查詢集進行正則表達式查詢。 我有一列具有像

'67,42,16', '16,42,67,70', '4,11,21,78', '12,45,6,22'

我想提取其中包含“ 4”或“ 70”的列。 這是我的正則表達式

 _regex = r"(^|(\d*,)+)%s((,\d*)+|$)" %('4|70')

和我的查詢

dict(Table.objects.filter(column__regex=_regex).values_list('row_id','column'))

其返回以下結果

{1563864L: u'67,42,16', 1563804L: u'16,42,67,70', 1563863L: u'4,11,21,78'}

我期望這個結果1563804L: u'16,42,67,70', 1563863L: u'4,11,21,78'

不知道為什么我得到1563864L: u'67,42,16'結果是1563864L: u'67,42,16'

任何幫助將不勝感激。 提前致謝

我只能猜測您要做什么,因為要逆轉正則表達式的原始意圖總是很困難。 嘗試這個。

_regex = '(^({0}),.+)|(.+,({0}),.+)|(.+,({0})$)'.format('4|70')

還有一點pythonic:

acceptable_values = [4, 70]
regex_template = '(^({0}),.+)|(.+,({0}),.+)|(.+,({0})$)'
_regex = regex_template.format('|'.join([str(v) for v in acceptable_values]))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM