例:- 正規表現
input: (n!/(1+n))
output: frac{n!}{1+n}
input: ((n+11)!/(n-k)^(-1))
output: frac{(n+11)!}{(n-k)^(-1)}
input: (9/10)
output: frac{9}{10}
input: ((n+11)!/(n-k)^(-1))+(11)/(2)
output: frac{(n+11)!}{(n-k)^(-1)}+(11)/(2)
次の正規表現作品なしサブ括弧がない場合。私はちょうどそれらを「結合」する方法を見つけ出すことはできません
\(([^\/\)]*)\/([^\)]*)\)
以下は一致ん括弧
@\((([^()]++|\((?:[^()]++|(?R))+\))+)\)@
は - 分裂とバランスの取れた括弧を処理するための単一の正規表現を記述します。
正規表現は、複雑な解析に適したツールではありません。特に、平衡テキストと一致する必要がある場合は、*特に*です。いくつかの正規表現の亜種が提供する拡張機能を使って、何かのハックを並べ替えることができますが、実際にこの種のものに実際のパーサを使用したいと思っています。 –
事は、私はとても近いです。私はパーサーについて何も知らないので、実装するのにはもっと時間がかかります。私はそれが正規表現で可能であり、それが最も簡単な方法であることを私は知っています。 – SamB
私は少なくとも*テストケースのために働いている答えを追加しました。自由に変更してもかまいません。完璧ではありません(所有量を追加することもできますし、勇気があれば単項 '+'を追加することもできます)。その最大の問題は、 'a + 2/3 + b' - >'(a + 2)/(3 + b) 'のように、すべての'/'を小数として扱うことです。 – Kobi