我正在使用 Lex 和 Yacc 开发一个从 MathML 到 Latex 的简单转换器。在包含正则表达式规则的 lex 文件中,我为算术运算符 [-+*=/] 定义了一个规则。我想扩展,以便它能够识别正负 (+-) 和不可见时间 ('&InvisibleTimes'),但我不熟悉正则表达式,我需要一些帮助。

有帮助吗?

解决方案

尝试这个:

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

请注意,您需要逃脱 ++- 因为它是角色类外的操作员。您可以使用BackSlash(就像我在这里完成的那样)或双引号做到这一点。 (双引号语法是非常不寻常的 - 大多数其他正则实现仅使用后斜线进行逃脱,因此我倾向于使用反斜杠,因为它使得正则更“常规”。)

其他提示

这样的工作会吗?

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

我对 MathML 不太熟悉,所以我有与你相反的问题。正如其他人所说,您可以在一个正则表达式中完成这一切,如下所示:

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

但是,如果您希望对每个操作执行不同的操作,则需要这样做:

[-+*=/]            {/* action 1 here */}
\+-                {/* action 2 here */}
&InvisibleTimes    {/* action 3 here */}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top