已经无奈了
谁来帮我把这个搞定……跪求……(T_T)regex exp1("(?<=<LogT>).*(?=</LogT>)");
regex exp2("(?<=<LogTime>).*(?=</LogTime>)");
regex exp3("(?<=<LogM>).*(?=</LogM>)");
std::string in;
cmatch what;
in1 = "<LogT>123</LogT><LogTime>456</LogTime><LogM>789</LogM>";
in2 = "X<LogT>123</LogT><LogTime>456</LogTime><LogM>789</LogM>";
if(regex_search(in1.c_str(), what, exp1))
{
int k = what.size();
for(int i=0;i<k;i++)
cout<<"str :"<<what[i].str()<<endl;
}vc2005,boost库1.39
我想最后提出123,456和789三个字符串,现在已经可以分步提出来了
但是没法合成一个表达式做,而且我看了文档和案例,仍然不明白该怎么把LogT/LogTime和LogM这三个标签给提出来,存到哪儿……
求助啊!
谁来帮我把这个搞定……跪求……(T_T)regex exp1("(?<=<LogT>).*(?=</LogT>)");
regex exp2("(?<=<LogTime>).*(?=</LogTime>)");
regex exp3("(?<=<LogM>).*(?=</LogM>)");
std::string in;
cmatch what;
in1 = "<LogT>123</LogT><LogTime>456</LogTime><LogM>789</LogM>";
in2 = "X<LogT>123</LogT><LogTime>456</LogTime><LogM>789</LogM>";
if(regex_search(in1.c_str(), what, exp1))
{
int k = what.size();
for(int i=0;i<k;i++)
cout<<"str :"<<what[i].str()<<endl;
}vc2005,boost库1.39
我想最后提出123,456和789三个字符串,现在已经可以分步提出来了
但是没法合成一个表达式做,而且我看了文档和案例,仍然不明白该怎么把LogT/LogTime和LogM这三个标签给提出来,存到哪儿……
求助啊!
这个时候求子表达式就能得到结果了...如果不知道子表达式的取值方法,我帮你查一下
不过这个式子的话,应该是匹配整个句子的吧?我看有反向字符做分组的例子\1这样的,但这个具体该怎么用呢?
还有就是我想问问what里面的匹配出来的regex_search的值应该怎么查,子表达式的值又该怎么查
一个sub_match就是一个子串,这个迭代器pair里的first和second分别指向了这个子串开始和结尾所在位置。
同时,sub_match又提供了str(),length()方法来返回整个子串。http://hi.baidu.com/cdutboy/blog/item/b449088a986f03769f2fb468.html
(<LogT>)\d+\1(<logX>)\d+\2 这样是\1的意思 就是匹配子表达式的意思...
问题我实际要读的是字符串……
总之,谢谢您了!!!
(?<=(<\\w+>)).*(<\/\1>),说是用来读<log>123</log>标签中的内容的东西,分式是1
但是我用程序试没弄出来,按您的说法,如果有多个<log1></log1><log2></log2><logn></logn>这样类型的标签,这里的\1可以替换成\d+,有多少个<log></log>的标签就创建多少个分支组?