Проблема в этом классе символов:
other_characters [./-_]
Тире в классе символов указывает диапазон возможных символов (как в [a-z]
, что соответствует любой строчной букве).Таким образом, /-_
соответствует любому символу, кодовая точка которого находится между /
(0x2F) и _
(0x5F) включительно.Этот диапазон включает цифры, прописные буквы и некоторые знаки пунктуации, включая двоеточие и точку с запятой.
Это делает двоеточие допустимым символом в {string}
, поэтому {string}
будет соответствовать ss:Workshop
.А поскольку flex отдает приоритет первому правилу, которое соответствует входному значению, это делает невозможным сопоставление правила ss:Workshop
.
Это можно исправить, поставив дефис в начале или в концекласса персонажей: [-./_]
или [./_-]
.Они будут соответствовать только одному из четырех перечисленных символов.
Кстати, нет необходимости ставить обратную косую черту или даже заключать ее в кавычки.Это не имеет особого значения в гибких моделях.