Вопрос

Я разрабатываю простой переводчик от Mathml на латекс, используя Lex и YACC. В моем файле LEX, содержащем правила Regex, у меня есть один определенный для арифметических операторов [-+*=/]. Я хочу расширить, чтобы он распознавал плюс-минус (+-) и невидимые времена ('& invisibletimes'), но я не знаком с Regex, и мне нужна помощь.

Это было полезно?

Решение

Попробуй это:

([-+*=/]|\+-|&InvisibleTimes)

Обратите внимание, что вам нужно избежать + в +- Потому что это оператор вне классов персонажей. Вы можете сделать это с BackSlash (как я здесь сделал) или с двойными цитатами. (Синтаксис двойного цитата довольно необычен-большинство других реализаций Regex используют Backslash только для сбега, поэтому я буду склонен к использованию BackSlashes, поскольку она делает регуляцию более «обычной».)

Другие советы

Будет ли что -то подобное работать?

(?:[-+*=/]|\+-|&InvisibleTimes)

Я не очень знаком с Mathml, поэтому у меня есть противоположная проблема вас. Как говорили другие, вы можете сделать все это в одной режиме, например, это:

[-+*=/]|\+-|&InvisibleTimes

Однако, если вы хотите иметь разные действия, связанные с каждым из них, вам нужно сделать это так:

[-+*=/]            {/* action 1 here */}
\+-                {/* action 2 here */}
&InvisibleTimes    {/* action 3 here */}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top