iregex只匹配完整的单词

所以我一直在试图实现一个搜索功能,用户可以输入关键字并查找用户。 搜索方法应该在用户的字段中查找精确的单词匹配,例如名字,姓氏,工作等

我已经尝试过图标,但是也会在单词内匹配,例如,如果用户输入“a”,搜索将返回包含“a”的任何内容。 (在我决定解决这个问题之前,这正是我原先所做的)

我试过iexact但显然会给出完全匹配,如果用户输入'john',则会跳过名字为'john doe'或其他用户的用户。

所以经过相当多的搜索后,我找到了两个stackoverflow线程

django过滤器图标只能匹配整个单词

仅在Django查询中进行全字匹配

因为我使用postgresql,所以我转而使用 y而不是 b。 现在我正在使用的查询是

results = User.objects.filter(first_name__iregex=r"y{0}y".format(first))

我也尝试了,我提到的两个线程中列出的其他方法。

results = User.objects.filter(first_name__iregex=r"y%sy"%first)

问题是它不会返回任何东西。 在调试过程中,我已经离开并检查了正在生成的查询,据我所知它似乎是正确的。

WHERE `LinkedApp_user`.`first_name` REGEXP yahsany 

我的数据库目前有大约5个用户,其中一个名为“ahsan”,另一个名为“ahsan saleem”。 但是这个查询什么都没有返 我真的很感激任何帮助。

编辑:我试图切换到SQLite和 b改变 y和搜索似乎已开始工作。 但是我无法使用sqlite,如果有人能指导我,我会非常感激。

另一编辑:我已通过切换数据库解决了我与postgresql的问题。 无论如何,这是一个愚蠢的错误。 问题是你如何使用mysql的这个工作,我所尝试过的所有失败。


在MySQL中,单词边界由[[:<:]]和[[:>:]](http://dev.mysql.com/doc/refman/5.7/en/regexp.html)匹配。

链接地址: http://www.djcxy.com/p/38691.html

上一篇: iregex to match complete word only

下一篇: Need a minimal Django file upload example