Frage

Ich entwickle einen einfachen Übersetzer von mathml bis latex mit Lex und YACC. In meiner LEX-Datei mit den Regex-Regeln habe ich eine für arithmetische Operatoren definiert [-+*=/]. Ich möchte erweitern, dass es Plus-Minus (+-) und unsichtbare Zeiten ('& Invisibletimes') erkennen würde, aber ich bin mit Regex nicht vertraut und brauche Hilfe.

War es hilfreich?

Lösung

Versuche dies:

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

Beachten Sie, dass Sie dem entkommen müssen + in +- Weil es ein Operator außerhalb von Charakterklassen ist. Sie können dies mit Backslash (wie ich es hier getan habe) oder mit doppelten Zitaten tun. (Die Doppelquote-Syntax ist ziemlich ungewöhnlich-die meisten anderen REGEX-Implementierungen verwenden nur Backslash zum Flucht.

Andere Tipps

Würde so etwas wie diese funktionieren?

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

Ich bin mit Mathml nicht sehr vertraut, also habe ich das entgegengesetzte Problem von dir. Wie andere gesagt haben, können Sie dies alles in einer Regex wie folgt tun:

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

Wenn Sie jedoch unterschiedliche Handlungen haben möchten, müssen Sie dies so tun:

[-+*=/]            {/* action 1 here */}
\+-                {/* action 2 here */}
&InvisibleTimes    {/* action 3 here */}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top