我正在使用Lex和Yacc开发一个从MathML到Latex的简单翻译器。在我的包含正则表达式规则的lex文件中,我为算术运算符[ - + * = /]定义了一个。我希望扩展它以便识别正负(+ - )和不可见时间('& InvisibleTimes'),但我不熟悉正则表达式,我需要一些帮助。
答案 0 :(得分:2)
这样的事情会起作用吗?
(?:[-+*=/]|\+-|&InvisibleTimes)
答案 1 :(得分:1)
试试这个:
([-+*=/]|\+-|&InvisibleTimes)
请注意,您需要转义+
中的+-
,因为它是字符类之外的运算符。你可以用反斜杠(我在这里完成)或双引号来做到这一点。 (双引号语法非常不寻常 - 大多数其他正则表达式实现只使用反斜杠进行转义,所以我倾向于使用反斜杠,因为它使正则表达式更“常规”。)
答案 2 :(得分:0)
我对MathML不太熟悉,所以我遇到了与你相反的问题。正如其他人所说,你可以在一个正则表达式中完成所有这些,如下所示:
[-+*=/]|\+-|&InvisibleTimes
但是,如果您想要将不同的操作与这些操作相关联,则需要这样做:
[-+*=/] {/* action 1 here */} \+- {/* action 2 here */} &InvisibleTimes {/* action 3 here */}