質問
LexとYaccを使用して、MathmlからLaTexまでのシンプルな翻訳者を開発しています。 Regexルールを含む私のLexファイルでは、算術演算子[ - +*=/]に定義されているものがあります。プラスマイナス(+ - )と目に見えない時間( '&Invisibletimes')を認識するように拡張したいのですが、Regexに不慣れであり、助けが必要です。
解決
これを試して:
([-+*=/]|\+-|&InvisibleTimes)
逃げる必要があることに注意してください +
の +-
キャラクタークラス以外のオペレーターだからです。これをバックスラッシュ(私がここでやったように)または二重引用符でこれを行うことができます。 (二重引用符の構文は非常に珍しいです - 他のほとんどの正規表現の実装は、逃げるためにバックスラッシュのみを使用しているので、regexをより「従来」にするため、バックスラッシュを使用する傾向があります。)
他のヒント
このようなものは機能しますか?
(?:[-+*=/]|\+-|&InvisibleTimes)
私はMathmlにあまり精通していないので、あなたの反対の問題があります。他の人が言ったように、あなたはこれをすべて1つの正規表現で行うことができます。
[-+*=/]|\+-|&InvisibleTimes
ただし、これらのそれぞれに関連するさまざまなアクションが必要な場合は、次のようにする必要があります。
[-+*=/] {/* action 1 here */} \+- {/* action 2 here */} &InvisibleTimes {/* action 3 here */}
所属していません StackOverflow