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にあまり詳しくないので、あなたとは逆の問題があります。他の人が言っているように、次のように、これをすべて1つの正規表現で行うことができます。
[-+ * = /] | \ +-|&InvisibleTimes
ただし、これらのそれぞれに異なるアクションを関連付けたい場合は、次のようにする必要があります。
[-+ * = /]{/*ここでアクション1*/} \+-{/*ここでアクション2*/} &InvisibleTimes{/*ここでアクション3*/}
于 2009-05-25T01:00:31.310 に答える