我正在使用pymongo并且想要搜索以特定字符序列开头的项目。我可能会这样实现:
items = collection.find({ 'key': '/^text/' })
这应该有效,但如果text
是变量怎么办?我可以做类似的事情:
items = collection.find({ 'key': '/^' + variable + '/' })
但是现在如果variable
中的文本包含具有特殊正则表达式含义的任何字符(例如$
),则查询不再按预期运行。 有没有办法进行某种参数绑定?我是否必须自己清理variable
?这甚至可靠吗?
谢谢!
答案 0 :(得分:9)
您必须以编程方式组装正则表达式。所以:
import re
regex = re.compile('^' + re.escape(variable))
items = collection.find({ 'key': regex })
OR
items = collection.find({'key': { '$regex': '^' + re.escape(variable) }})
请注意,代码使用re.escape
来转义字符串,以防它包含特殊字符。
答案 1 :(得分:-1)
以下是概念:您必须使用regex
items = collection.find({
'key' : {
$regex : yourRegex
}
})