09/03/20 22:15:43
言語は
BoostライブラリBoost.Xpressiveか、Boost.Regexか、Boost.Spirit
です。(標準C++,コンパイラg++。)
括弧の対応のバランスがとれているならマッチさせるという正規表現はどう書けますか?
boost::xpressive::sregex parens;
parens = *( '(' >> by_ref(parens) >> ')' );
だと
()→マッチ
()()→マッチ
()(()((()))())→マッチ
(()))))→マッチしない
です。
私としては(1+3)*(4+(8-9))の様に括弧以外の文字が含まれていても括弧のバランスがとれているか判定できるようにしたいのですが。
ただし括弧としては ( か ) だけを想定し、{}[]などは判定の対象にはせず、数式として成り立っているかどうかなども判定せず、あくまで ( と ) のバランスだけを見たいです。