2016-04-26 11 views
0

Ich teste MongoAlchemy für ein Projekt und ich muss Benutzer nach Namen suchen.MongoAlchemy Regex nichts zurück

Ich versuche, eine Regex zu machen, aber Abfrageergebnis ist immer leer.

Ich habe versucht, zwei Methoden:

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

Und:

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

Auch wenn ich wie /.*/ eine sehr allgemeine Regex verwenden, das Ergebnis ist immer leer.

Vielen Dank.

+3

Vielleicht, weil Sie 'a' werden anstelle von'/a/'sollte? Sie verwenden Python-Muster und Regex-Delimiter sind nie Teil von Python-Regexps. –

+0

Ja. Streichen Sie diese Schrägstriche, die in anderen Kontexten (Perl, sed oder was auch immer) "Suche" bedeuten können. Hier müssen Sie nur die Regexp selbst geben. Bei Aufruf von 'filter' wird angegeben, dass eine Suche erforderlich ist. – Alfe

Antwort

1

In Python regular expressions sind nicht mit /regexp/ definiert, das ist JavaScript-Syntax.

Der richtige Weg, reguläre Ausdrücke zu initialisieren wäre:

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

Sie sollten also verwenden:

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

Es funktioniert, danke. Zwei Methoden funktionieren jetzt. – amiceli