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')
添加回答
舉報