Я пишу шаблоны лексера Flex для соответствия ряду команд.В отличие от клиента командной строки Subversion, команды могут быть сокращены до небольшой, но однозначной длины.
Таким образом, такую команду, как:
MYCOMMAND
Можно ввести как:
MYCOMMAND
MCOMMAND
MYCOM
MC
Шаблон, который я неосознанно писал для этих случаев, выглядит следующим образом:
M(Y)?C(O|OM|OMM|OMMA|OMMAN|OMMAND)?
И он отлично работает, но пахнет довольно плохо, особенно на очень длинных определениях, есть ли более короткий путьопределение такого совпадения?