现在用 BOOST 做正则表达式我用的是 boost_1_33_1安装好了
然后做
用一个例子regex expression("^select ([a-zA-Z]*) from ([a-zA-Z]*)"); 进行匹配
直接输入 select asdf from ertwert 没有问题
但是要是输入 wertselect asdf from ertwert 就匹配不成功然后我该了下,用 regex expression("(=(.*))"); 等做模板
还是一样,也就是说,从头开始可以,但是从任意位置匹配的时候就失败有没有人遇到过这样的问题呢?怎么解决呢
我用过 vs.net 的正则,那感觉很溜.
但是 BOOST 的这个怎么感觉那么别扭呢?应该是还没有上路的原因各位大哥指点下啊

解决方案 »

  1.   

    boost 的比 MS的好很多 支持 {m,n}只是 你的我不懂...
      

  2.   

    regex expression("^select ([a-zA-Z]*) from ([a-zA-Z*)");直接输入 select asdf from ertwert 没有问题
    但是要是输入 wertselect asdf from ertwert 就匹配不成功~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`你说的很正确,^ 符号的意思是开头匹配,所以只有以select开头的才能匹配成功
      

  3.   

    可是regex expression("select ([a-zA-Z]*) from ([a-zA-Z*)");效果也是一样的啊
      

  4.   

    select\b\s[a-zA-Z]*\s\bfrom\b\s[a-zA-Z]*
      

  5.   

    我也不想
    现在都郁闷死了
    具体的代码是:     regex expression("select ([a-zA-Z]*) from ([a-zA-Z]*)");
             cmatch what;
    char c[200];
    std::strcpy(c,"select asf from sdfg select sdf from gdfgdfg");
          if(regex_match(c, what, expression))
             {//匹配后的处理
             }
             else
             {
                cout<<"Error Input"<<endl;
             }这样执行的结果就是 Error Input
    看表现好像是执行了整行匹配
    应该是regex_match的参数不对
    谁有这样的经验啊标准的正则我会,但是这个怎么就用不了呢?
      

  6.   

    奇怪了
    大家给的示例都是单行全部匹配的内容
    也就是说只能匹配一条数据
    难道boost的所谓强大就这么点吗?
    等待高手指点迷津