Вопрос
Я разрабатываю простой переводчик от 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 */}