2016-04-26 84 views
0

我正在测试项目的MongoAlchemy,我必须按名称搜索用户。MongoAlchemy正则表达式不返回

我试图做一个正则表达式,但查询结果总是空的。

我尝试了两种方法:

import re 
users = User.query.filter({"name":re.compile("https://stackoverflow.com/a/", re.IGNORECASE)}).all() 

和:

users = User.query.filter(User.name.regex('/a/', ignore_case=True)).all() 

即使我使用像/.*/一个非常普遍的正则表达式,结果总是空的。

谢谢。

+3

也许是因为你应该使用'了',而不是'/ A /'?您正在使用Python模式,而正则表达式分隔符从来不是Python正则表达式的一部分。 –

+0

是的。剥去其他情况下的那些斜线(Perl,sed或其他)可能意味着“搜索”。这里你只需要给出正则表达式本身。用'filter'调用它表示需要搜索。 – Alfe

回答

1

在Python中regular expressions未使用/regexp/定义,这是javascript语法。

的正确方法来初始化正则表达式是:

re.compile(r".*", re.IGNORECASE) 

所以,你应该使用:

users = User.query.filter({"name": re.compile(r".*", re.IGNORECASE)}).all() 
+0

它的工作原理,谢谢。 现在有两种方法可以工作。 – amiceli