一个简单的正则表达式问题
使用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+)
不要使用贪婪模式