如何否定pymongo中的正则表达式

时间:2017-03-20 18:57:08

标签: python regex mongodb pymongo

是否可以否定pymongo中的正则表达式?我想获取date字段不是YYYY-MM-DD格式的文档。

我试过

regex = '/^\d{4}-\d{2}-\d{2}$/' 
col.find({'date': {'$not': re.compile(regex)}}, {'_id': 0, 'date': 1})

但它没有做我想要的。

1 个答案:

答案 0 :(得分:1)

否定^\d{4}-\d{2}-\d{2}$模式意味着您要匹配任何不符合该模式的字符串。

您可以使用基于正面的负面预测并在代码中使用它而不会有任何否定:

^(?!\d{4}-\d{2}-\d{2}$)

由于该模式用于部分匹配字符串,因此该模式将在不以4位数字开头的字符串中查找起始位置,-,2位数,-和2位数然后是字符串标记的结束。

请参阅regex demo

要禁止空匹配,请在模式的末尾添加.