Вывести минимальное регулярное выражение из входных данных

У меня есть удаленный «агент», который возвращает «да» или «нет» при передаче нить.Взаимодействие с этим агентом обходится дорого, поэтому я надеюсь найти библиотеку, которая позволит мне итеративно строить регулярное выражение с учетом положительной и отрицательной обратной связи, при этом разумно подходя к его построению. Это позволило бы мне кэшировать ответы на отправляющей стороне.

Например, предположим, что мы запрашиваем у агента «хорошо» и получаем «да». Исходное производное регулярное выражение должно быть «хорошим».

Предположим, я запрашиваю "goop" и получаю "да". Я ожидал, что производное регулярное выражение будет «goo [dp]», а не «good | goop».

И так далее.

Мне не нужен поиск с возвратом или какие-либо другие причудливые операции с нелинейным временем в моем производном регулярном выражении. Предположительно сгенерированное регулярное выражение будет DFA под капотом. Кто-нибудь знает о библиотеках регулярных выражений c / c ++, способных на это? В качестве альтернативы также были бы полезны причины, по которым это глупая идея, и лучшие решения моей реальной проблемы.

9
задан tgoodhart 28 September 2011 в 12:46
поделиться