用正则判断配对的“()”?没问题,一行搞定

boost::regex 好像要1.5x吧,扩展perl语法

(?(DEFINE)(?(?>\ ((?:[^()'"]|(?&parentheses))*\ ))))

\ ( 、 \ )间的空格自己去掉一下。

以后直接用(?&parentheses)就行。

什么?''和“”里的()怎么办?

(?(DEFINE)(?(?>'(?:\\.|(?>[^\']+))*'))(?(?>"(?:\\.|(?>[^\\"]+))*"))(?(?>\ ((?:(?&char)|(?&string)|[^()'"]|(?&parentheses))*\ ))))

boost::xpressive

sregex xre_Parentheses = '(' >> *(keep(+~(set='(', ')')) | by_ref(xre_Parentheses)) >> ')';

什么?''和“”里的()怎么办?

sregex xre_Char    = '\'' >>  *('\\' >> _ | keep(+~(set='\\', '\''))) >> '\'';
sregex xre_String  = '"' >> *('\\' >> _ | keep(+~(set='\\', '"'))) >> '"';

拿去自己加吧,当小练习啦。

 

 

你可能感兴趣的:(C++,boost,C/C++)