Как эффективно сопоставить строку с набором подстановочных строк?

Я ищу решение для сопоставления одной строки с набором подстановочных строк. Например

>>> match("ab", ["a*", "b*", "*", "c", "*b"])
["a*", "*", "*b"]

Порядок вывода не имеет значения.

У меня будет порядка 10 ^ 4 строк с подстановочными символами для сопоставления, и я сделаю около 10 ^ 9 совпадений. Это означает, что мне, вероятно, придется переписать мой код так:

>>> matcher = prepare(["a*", "b*", "*", "c", "*b"]
>>> for line in lines: yield matcher.match("ab")
["a*", "*", "*b"]

Мы начали писать три-реализацию на Python, которая обрабатывает подстановочные знаки, и мне просто нужно правильно разобраться с этими угловыми случаями. Несмотря на это, мне любопытно услышать;Как бы вы решили это? Существуют ли какие-либо библиотеки Python, которые позволяют мне решить эту проблему быстрее?

Некоторые идеи до сих пор:

Именованные (Python, re) регулярные выражения мне здесь не помогут, так как ониЯ верну только один матч.Pyparsing похоже на классную библиотеку, но редко документируется и, на мой взгляд, не поддерживает сопоставление нескольких шаблонов.

Ответы на вопрос(2)

Ваш ответ на вопрос