Pergunta
Estou desenvolvendo um tradutor simples do MathML para o LATEX, usando o Lex e o YACC. No meu arquivo lex contendo as regras regex, tenho uma definida para operadores aritméticos [-+*=/]. Quero se estender para que ele reconheça mais-minúsculo (+-) e tempos invisíveis ('& Invisibletimes'), mas não estou familiarizado com Regex e preciso de ajuda.
Solução
Experimente isso:
([-+*=/]|\+-|&InvisibleTimes)
Observe que você precisa escapar do +
dentro +-
Porque é um operador fora das classes de personagens. Você pode fazer isso com barragem (como já fiz aqui) ou com cotações duplas. (A sintaxe de duas quadras é bastante incomum-a maioria das outras implementações da Regex usa apenas barrajash para escapar, então eu estaria inclinado a usar barras de barragem, pois torna a Regex mais "convencional".)
Outras dicas
Algo assim funcionaria?
(?:[-+*=/]|\+-|&InvisibleTimes)
Não estou muito familiarizado com o MathML, então tenho o problema oposto de você. Como outros disseram, você pode fazer tudo isso em um regex, assim:
[-+*=/]|\+-|&InvisibleTimes
No entanto, se você deseja ter ações diferentes associadas a cada uma delas, precisa fazer assim:
[-+*=/] {/* action 1 here */} \+- {/* action 2 here */} &InvisibleTimes {/* action 3 here */}