• paip.c++ 正则表达式的应用跟普通正则表达式的区别以及特别注意点总


    paip.c++   正则表达式的应用跟普通正则表达式的区别以及特别注意点总结


    作者Attilax ,  EMAIL:1466519819@qq.com 
    来源:attilax的专栏
    地址:http://blog.csdn.net/attilax


    例子:
       QString html= "  <a href=\"http://blog.csdn.net/attilax/article/category/1632463\">.net</a><span>(1)</span>            </li>            <li>            <a href=\"http://blog.csdn.net/attilax/article/category/1632465\">php</a><span>(4)</span> end";
       
     
     
    1.普通正则表达式
    --------------------
      <a href=.*?>   就可以找到...但是c++里面不行.. 好像不支持这个最小模式语法.
      .*?是最小模式,去掉问号.*则是贪婪模型..
      
     2.c++中的正则表达式
     -------------------
    c++中只能使用  <a href=.*>   ,但是这个是贪婪模型..所以腰 rx.setMinimal((true));设置为正常的模型..
    此外,抓取到的每个匹配都是list,一般 list[1]是 .* 代表的内容..list[0]是对应整个表达式匹配的内容<a href=*****>..


    源码如下:
    ------------


      QRegExp rx;
      //      rx.setPatternSyntax(QRegExp::Wildcard);
      //      rx.setCaseSensitivity(Qt::CaseSensitive); //大小写敏感
      QString templet="<a href=\"http://blog.csdn.net/attilax/article/category/(.*)</a><span>";
      rx.setPattern(templet); //匹配所有大小写字母和数字组成的字符串
      rx.setMinimal((true));
      //   QString s = html;


      int pos = 0;




       //ati c922  open file wait 2 write
       QString fileName ="c:\csdncat.txt";


       QFile f( fileName );


       f.open(QIODevice::WriteOnly );


       QTextStream t(&f);


    //end




       while ((pos = rx.indexIn(html, pos)) != -1) {


           QStringList list = rx.capturedTexts();
           //    QStringList sl = rx.cap(1).split(QChar(' '));


           //      qDebug() << sl.at(0);
           QString idAndName=list.at(1);
           QString  idAndNameOk=idAndName.replace("\">",",");
           qDebug() << idAndNameOk;
           t <<  idAndNameOk +"\r\n";




           pos += rx.matchedLength();


       }


           f.close();






    参考:
    Qt之正则表达式 - QRegExp - 与时俱进 - 博客园.htm
    正则基础之——贪婪与非贪婪模式 - 雁过无痕 - 博客频道 - CSDN.NET.htm
       











  • 相关阅读:
    pyspider 在ubuntu上安装失败怎么搞?
    怎么在项目中使用前端包管理器bower和构建工具gulp
    Asp.net mvc 实时生成缩率图到硬盘
    如果转载优酷、土豆视频等,怎么让视频自适应宽度?
    C语言II博客作业04
    C语言I博客作业03
    C语言II博客作业02
    C语言II博客作业01
    学期总结
    The first essay
  • 原文地址:https://www.cnblogs.com/attilax/p/15199539.html
Copyright © 2020-2023  润新知