>>841
(?:([^+*()]+)|\((?R)\))(?:[+*](?R))?

C#は知らないけれど、こんな感じ?
ただ、((aaa+bbb)には(aaa+bbb)でマッチするけどねー。

適当に再帰下降パーザを書いた方が確実だと思われ。