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