首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

一个简单的正则表达式有关问题

2012-01-29 
一个简单的正则表达式问题使用boost的regex如下代码:regex Expr((([a-zA-Z]+)(\\d+))+)string sTmp

一个简单的正则表达式问题
使用boost的regex;
如下代码:
regex Expr("(([a-zA-Z]+)=(\\d+))+");
string sTmp = "a=1b=2c=3dd=100";
smatch results;

if(regex_match(sTmp, results, Expr))
{
  ...
};

为什么results的size为3呢,只能取出dd 100? 如果我想取出所有等号两边的(key, value)对应该怎么做?
即:
a 1
b 2
c 3
dd 100

谢谢~~~

[解决办法]
([a-zA-Z]+)=(\\d+)
就已经ok了吧。。。
[解决办法]
第一次匹配
dd 100 后,通过results把已经匹配地字符删除,
用剩下串再匹配。
当然可能有更好查找重复匹配的方法。
[解决办法]
([a-zA-Z]+)=(\\d+) 

不要使用贪婪模式

热点排行