regex and case insensitive - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: regex and case insensitive (/thread-28449.html) |
regex and case insensitive - Leon79 - Jul-19-2020 Hello Coders, I have almost solved with my little search bar, just I cannot manage to look for the word with case insensitive, if I write parmesan it finds it, all work normally, if I write ParMeSan it doesn't. Any Idea? I'm reading the documentation but cannot manage to do like it's written there, thank you! @app.route('/search', methods=["POST"]) def search(): if request.method == "POST": data = request.form.to_dict() keyword = str(data['mysearch']) query={"ingredients": { "$regex": keyword }} return render_template("search.html", recipes=mongo.db.recipes.find(query)) RE: regex and case insensitive - bowlofred - Jul-19-2020 I don't see what's actually doing the lookup. But if render_template uses python regex engine, you can probably add a (?i) to the beginning of the regex.>>> re.search("Hi", "what is this?") >>> re.search("(?i)Hi", "what is this?") <_sre.SRE_Match object; span=(9, 11), match='hi'> RE: regex and case insensitive - Leon79 - Jul-19-2020 (Jul-19-2020, 07:57 PM)bowlofred Wrote: I don't see what's actually doing the lookup. But if render_template uses python regex engine, you can probably add a I'm using a form to look for an ingredients, the webpage will show me a page with the result of all the recipes with that ingredients. @app.route('/search', methods=["POST"]) def search(): if request.method == "POST": data = request.form.to_dict() keyword = str(data['mysearch']) query={"ingredients": { "$regex": keyword }} return render_template("search.html", recipes=mongo.db.recipes.find(query))This code is in main.py, my code works, the only thing is that I would like it looks for case insensitive, for example if I write parmisan, it gives me many results, but if I write ParMiSan none, because it's looking in case sensitive mode. I just would like to know how to add the option to make it case insensitive. RE: regex and case insensitive - bowlofred - Jul-19-2020 Did you try what I said above? Add "(?i)" to the front of the regex. RE: regex and case insensitive - Leon79 - Jul-19-2020 (Jul-19-2020, 08:26 PM)bowlofred Wrote: Did you try what I said above? Add "(?i)" to the front of the regex. No because I don't know exactly where to put it sorry RE: regex and case insensitive - bowlofred - Jul-19-2020 I'm assuming it's just keyword. So try instead of your line 5, something like: keyword = "(?i)" + str(data['mysearch']) RE: regex and case insensitive - Leon79 - Jul-19-2020 (Jul-19-2020, 08:31 PM)bowlofred Wrote: I'm assuming it's just keyword. So try instead of your line 5, something like: no it doesn't work at all on this way, thank you for trying RE: regex and case insensitive - bowlofred - Jul-19-2020 Can you give an example of what one of your $regex is set to? Looks like mongo can take the perl-style /$regex/i form. RE: regex and case insensitive - Leon79 - Jul-20-2020 (Jul-19-2020, 08:53 PM)bowlofred Wrote: Can you give an example of what one of your $regex is set to? Looks like mongo can take the perl-style /$regex/i form. I made it, after checking 2000 websites, none of them was giving me the answer, and the answer was actually the simplest. Just needed to understand the logic of the syntax: query={"ingredients": { "$regex": keyword, "$options": "i" }}Thank you! |