boost::regex 好像要1.5x吧,扩展perl语法
(?(DEFINE)(?<parentheses>(?>\ ((?:[^()'"]|(?&parentheses))*\ ))))
\ ( 、 \ )间的空格自己去掉一下。
以后直接用(?&parentheses)就行。
什么?''和“”里的()怎么办?
(?(DEFINE)(?<char>(?>'(?:\\.|(?>[^\']+))*'))(?<string>(?>"(?:\\.|(?>[^\\"]+))*"))(?<parentheses>(?>\ ((?:(?&char)|(?&string)|[^()'"]|(?&parentheses))*\ ))))
boost::xpressive
sregex xre_Parentheses = '(' >> *(keep(+~(set='(', ')')) | by_ref(xre_Parentheses)) >> ')';
什么?''和“”里的()怎么办?
sregex xre_Char = '\'' >> *('\\' >> _ | keep(+~(set='\\', '\''))) >> '\'';
sregex xre_String = '"' >> *('\\' >> _ | keep(+~(set='\\', '"'))) >> '"';
拿去自己加吧,当小练习啦。