У меня есть алфавит {A, B, C}
и (большое) число слов в этом алфавите:
AAABBCABBCCCCAA, ABBBCCC, BBBBCACAC, ...
(разной длины, различные комбинации)Регулярное выражение, которое можно описать строку
Я ищу набор регулярных выражения (чем меньше, тем лучше), которые могут описывать эти слова. Я предпочитаю компактный ((BC)+
за BCBC
). Это не домашнее задание.
- Что такое хороший способ сделать это?
- Есть ли пакет Python, который уже делает это?
Я нашел this question для связи.
Обновление: Возможно, я помчался, когда говорил, что предпочитаю (BC)+
над BCBC
. Я предпочитаю иметь как можно меньше выражений (в худшем случае существует одно регулярное выражение для каждой строки), поэтому предпочтение для одного из A+
, AA
или AA+
для описания AA
(например) должно зависеть от того, какие шаблоны демонстрируют другие строки.
Ваша цель - получить набор регулярных выражений, соответствующих словам конкретно? (Есть проблема с простое использование чего-то вроде '[AC] +'?) – Vulcan
Очевидно, вы можете сделать 'NFA' для соответствия всем этим строкам (конвертировать их в' DFA'), свести его к минимуму и превратить в Regex, поэтому он будет соответствовать вашим наборам строк. – fardjad
@ Vulcan Да, я хочу точно указать слова. Я думаю, что DFA + NFA сделает это. –