题
我正在使用 Lex 和 Yacc 开发一个从 MathML 到 Latex 的简单转换器。在包含正则表达式规则的 lex 文件中,我为算术运算符 [-+*=/] 定义了一个规则。我想扩展,以便它能够识别正负 (+-) 和不可见时间 ('&InvisibleTimes'),但我不熟悉正则表达式,我需要一些帮助。
解决方案
尝试这个:
([-+*=/]|\+-|&InvisibleTimes)
请注意,您需要逃脱 +
在 +-
因为它是角色类外的操作员。您可以使用BackSlash(就像我在这里完成的那样)或双引号做到这一点。 (双引号语法是非常不寻常的 - 大多数其他正则实现仅使用后斜线进行逃脱,因此我倾向于使用反斜杠,因为它使得正则更“常规”。)
其他提示
这样的工作会吗?
(?:[-+*=/]|\+-|&InvisibleTimes)
我对 MathML 不太熟悉,所以我有与你相反的问题。正如其他人所说,您可以在一个正则表达式中完成这一切,如下所示:
[-+*=/]|\+-|&InvisibleTimes
但是,如果您希望对每个操作执行不同的操作,则需要这样做:
[-+*=/] {/* action 1 here */} \+- {/* action 2 here */} &InvisibleTimes {/* action 3 here */}
不隶属于 StackOverflow