Ich entwickle einen einfachen Übersetzer von MathML zu Latex, mit Lex und Yacc. In meiner Lex-Datei, die die Regex-Regeln enthält, habe ich eine für arithmetische Operatoren definiert [- + * = /]. Ich möchte erweitert werden, so dass es plus-minus (+ -) und unsichtbare Zeiten ('& InvisibleTimes') erkennen würde, aber ich bin mit Regex nicht vertraut und ich brauche etwas Hilfe.Regex für Lex
Antwort
Versuchen Sie folgendes:
([-+*=/]|\+-|&InvisibleTimes)
Beachten Sie, dass die +
in +-
entkommen müssen, weil es ein Bediener außerhalb von Zeichenklassen ist. Sie können dies mit Backslash (wie ich es hier gemacht habe) oder mit Anführungszeichen tun. (Die doppelte Anführungszeichen-Syntax ist ziemlich ungewöhnlich - die meisten anderen Regex-Implementierungen verwenden nur Backslash zum Entkommen, also würde ich geneigt sein, Backslashes zu verwenden, da es die Regex "konventioneller" macht.)
Würde so etwas funktionieren?
(?:[-+*=/]|\+-|&InvisibleTimes)
Ich bin nicht sehr vertraut mit MathML, so habe ich das gegenteilige Problem von dir. Wie andere gesagt haben, können Sie dies in einem regulären Ausdruck alle tun, wie folgt aus:
[-+*=/]|\+-|&InvisibleTimes
Wenn Sie jedoch mit jedem dieser verschiedenen Aktionen zugeordnet haben wollen, müssen Sie es wie dies zu tun:
[-+*=/] {/* action 1 here */} \+- {/* action 2 here */} &InvisibleTimes {/* action 3 here */}
- 1. Lex/Yacc für C#?
- 2. Verschachtelte Kommentare entfernen bz lex
- 3. yacc/lex oder Hand-Codierung?
- 4. Gründe für die Verwendung von Lex/Yacc-Alternativen?
- 5. Angemessene Verwendungen für yacc/byacc/bison und lex/flex
- 6. Gibt es aktive Lex und Yacc IRC?
- 7. Force CL-Lex das ganze Wort lesen
- 8. Kann jemand diese Lex-Präprozessorausgabe erklären?
- 9. Langsame Kompilation von Bison und Lex Grammatik
- 10. Verwenden der Wörterbuchdatenstruktur in Lex/Yacc
- 11. Beste moderne Textparsing? AKA Wann benutzt man Lex und Yacc?
- 12. Lex Yacc Parser bei EOF stecken
- 13. Fehlerbedingungen in Lex eher als Yacc behandeln?
- 14. Boost Spirit und Lex Parser Problem
- 15. Verknüpfung lex Programm, mit dem Präfix erstellt
- 16. Lex/Yacc: Nachricht vor Eingabe drucken
- 17. Lex - Achtung, Regel kann nicht abgestimmt werden
- 18. Zeichenposition im Scanner mit Lex/Flex
- 19. Schwierigkeiten, c-Stil Kommentare in flex/lex
- 20. Ist das ein Fehler von Lex?
- 21. lex/yacc Programme mit mehreren Ausgabedateien
- 22. Wie benutze ich yy_scan_string in Lex
- 23. Tokenizing links über Daten mit lex/yacc
- 24. Warum benötigt es Regeln in Lex?
- 25. regex help für Validatoren
- 26. Regex für kommagetrennte Nummer
- 27. Regex für irgendetwas zwischen []
- 28. Regex für passende Akzentzeichen
- 29. REGEX für Telefonnummer - Rubin
- 30. Regex für dieses Datumsformat?