我有一系列不同的字符串。
lst = ['.\*123.\*','.\*252.\*','.\*812.\*','.\*135.\*']
我想执行聚合操作,以使我的$ match看起来如下:
{"$match":{"Var":{"$in":lst}}}
MongoDb记录中的var字段是一个包含数字的字符串:
例如“abc123”,“haaofalfa812”等我希望将这个Var与正则表达式相匹配。如果lst中的变量较少,我可以做到这一点......
{"$match":{"Var":{"$in":[re.compile('.*123.*'),re.compile('.*252.*'),re.compile('.*812.*')]}}}
但由于它已经初始化并包含很多元素,我该怎么办?
我尝试了以下但是这也不起作用......
{"$match":{"Var":{"$in":[re.compile(x for x in lst)]}}}
出于显而易见的原因,我收到以下错误。
TypeError:第一个参数必须是字符串或编译模式
答案 0 :(得分:2)
你的列表理解是错误的。我想你想做的是:
[re.compile(x) for x in lst]
TypeError
来自尝试将生成器(x for x in lst
语句)传递给re.compile()