我有这个过滤器
filters = Q(my_text__icontains=typed_word)
我需要以这样的方式修改它:如果typed_word是“ABCD”,它应该返回任何ABCD,可以在单词中的任何位置有一个“-”(破折号),例如:将返回“ABCD”本身,但也返回“A-BCD”和“AB-CD”和“ABC-D”
顺便说一句,数据库中的任何单词都只有一个破折号,没有一个单词会有多个破折号
我尝试了一些模式使用类似这样的my_text__iregex=pattern
但没有运气
我有这个过滤器
filters = Q(my_text__icontains=typed_word)
我需要以这样的方式修改它:如果typed_word是“ABCD”,它应该返回任何ABCD,可以在单词中的任何位置有一个“-”(破折号),例如:将返回“ABCD”本身,但也返回“A-BCD”和“AB-CD”和“ABC-D”
顺便说一句,数据库中的任何单词都只有一个破折号,没有一个单词会有多个破折号
我尝试了一些模式使用类似这样的my_text__iregex=pattern
但没有运气
1条答案
按热度按时间flmtquvp1#
使用
replace()
函数来删除破折号,而不是复杂的正则表达式。类似于:参见demo here。注意:如果你的语句 * 数据库只有一个破折号 * 必须被强制,那么你可能需要验证单词的长度只相差1个字符。以上内容将取代所有破折号。