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

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='\\', '"'))) >> '"';

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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值