[...]
- это класс символов, а не эксцентричный тип скобок.Если вы хотите заключить в скобки подвыражение в шаблоне, используйте обычные скобки.Однако в этом случае скобки не нужны.(Действительно, большинство цитат также не являются необходимыми, но они не причиняют вреда, и некоторые из них были бы полезны.)
"=="
распознает две последовательности символов, состоящие из двух знаков равенства."=="|"++"
распознает либо два знака равенства, либо два знака плюс.
В отличие от этого, ["=="]
распознает один символ, который может быть либо кавычкой, либо знаком равенства.Поскольку класс символов является набором, тот факт, что каждый из них появляется дважды, не имеет значения (хотя я думаю, что если бы Flex выпустил предупреждение, это сэкономило бы много горя).Точно так же ["=="|"<<"]
распознает один символ, если это кавычка, знак равенства, вертикальная черта или знак «меньше».
Синтаксис шаблона Flex задокументирован в руководстве flex .Он несколько отличается от регулярных выражений в других системах, поэтому стоит прочитать краткий документ.Однако классы символов в большинстве случаев одинаковы во всех синтаксисах регулярных выражений, особенно при использовании квадратных скобок для разграничения набора.