Примеры:
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))+\))+)\)@
Я просто не могу понять, как их "объединить" - написать одно регулярное выражение для обработки деления и сбалансированных скобок.
+
, если вы смелы). Самая большая проблема с ним заключается в том, что он рассматривает все/
как дробь без порядка операторов:a+2/3+b
->(a+2)/(3+b)
. - person Kobi   schedule 18.01.2011