我正在使用 Lex 和 Yacc 开发一个从 MathML 到 Latex 的简单翻译器。在包含正则表达式规则的 lex 文件中,我为算术运算符 [-+*=/] 定义了一个。我想扩展以便它可以识别加减(+-)和不可见时间('&InvisibleTimes'),但我不熟悉正则表达式,我需要一些帮助。
问问题
1338 次
3 回答
2
像这样的东西会起作用吗?
(?:[-+*=/]|\+-|&InvisibleTimes)
于 2009-05-25T00:02:39.430 回答
1
尝试这个:
([-+*=/]|\+-|&InvisibleTimes)
请注意,您需要对 in 进行转义+
,+-
因为它是字符类之外的运算符。您可以使用反斜杠(就像我在这里所做的那样)或使用双引号来执行此操作。(双引号语法很不寻常——大多数其他正则表达式实现只使用反斜杠进行转义,所以我倾向于使用反斜杠,因为它使正则表达式更加“常规”。)
于 2009-05-25T00:19:52.750 回答
0
我对 MathML 不是很熟悉,所以我遇到了与您相反的问题。正如其他人所说,您可以在一个正则表达式中完成所有操作,如下所示:
[-+*=/]|\+-|&InvisibleTimes
但是,如果您想要与其中的每一个相关联的不同操作,您需要这样做:
[-+*=/] {/* 此处的操作 1 */} \+- {/* 此处为操作 2 */} &InvisibleTimes {/* 此处为动作 3 */}
于 2009-05-25T01:00:31.310 回答