首页 > 编程语言 > 详细

【python】pymongo中正则查询时的转义问题

时间:2015-12-25 19:22:46      阅读:735      评论:0      收藏:0      [点我收藏+]

在查询mongo时用到了正则查询

 

设字符串为   str = ‘/ab/cd.ef?g=‘

直接用正则查询没有匹配。

collection.find({"re":{$regex:str},‘b:{$nin:[False]}}).count()

原因是 /  .  ? 都是正则表达式中的特殊字符,如果要保留原义则需要用"\"来进行转义

即把字符串改成  str = ‘\/ab\/cd\.ef\?g=‘

但是,由于"\"在python中是一个特殊符号,所以要用"\\"来表示

 

定义一个把字符转义的函数

def transfer_str(str):
    new_str = ""
    special = [/,^,$,*,+,?,.]
    for c in str:
        if c in special:
            new_str += \\
        new_str += c
    return new_str

然后调用

collection.find({"re":{$regex:transfer_str(str)},b:{$nin:[False]}}).count()

 

这样就可以得到正确结果了

 

【python】pymongo中正则查询时的转义问题

原文:http://www.cnblogs.com/dplearning/p/5076677.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!