Посоветуйте алгоритм разбора строки.
Есть строка. Есть список X из списков Yi. Нужно разобрать строку, как это делают регеспы, но в качестве шаблона служат элементы списка Yi, входящего в X. То есть шаблон для строки pattern1 pattern2..., где patterni - список Yi. Возможно существование нескольких вариантов разбора. Нужен наиболее быстрый алгоритм. Пока есть идеи насчёт "образовать и проверить", может на его основе что-нибудь есть, учитывающий потенциальные грабли?