2 回答
TA贡献1777条经验 获得超10个赞
您需要循环遍历集合而不是简单的调用。
为了避免为示例设置整个集合字典,我将其抽象为简单的 my_set。
import re
my_set = {'abc/hi/you','xyz/hi/you','jkl/hi/you'}
regx = re.compile('^a.*c/hi/you$')
for path in my_set:
if regx.match(path):
print(path)
我选择编译而不是仅仅re.match()因为该集合在实际实现中可能有超过 100 万个元素。
TA贡献1836条经验 获得超13个赞
您可以set子类化该类并实现a in b运算符
import re
from collections import defaultdict
class MySet(set):
def __contains__(self, regexStr):
regex = re.compile(regexStr)
for e in self:
if regex.match(e):
return True
return False
my_dict = defaultdict(MySet)
my_dict['some_key'].add('abc/hi/you')
regx = '^a.*c/hi/you$'
if regx in my_dict['some_key']:
print('abc/hi/you')
添加回答
举报
