zoukankan      html  css  js  c++  java
  • 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
       











  • 相关阅读:
    免费 官方的ASP.NET MVC电子书Professional ASP.NET MVC 1.0
    首次接觸 ADO.NET Entity Framework
    WaitAll for multiple handles on a STA thread is not supported. (原)
    太棒了!想学英语的好好留着!
    How should I Install SQL Server 2008 Express Edition
    How to view the W3WP process by c#?
    WinDbg basics HOWTO for QA engineers
    IIS Appcmd Tool
    Remote IIS Debugging : Debug your ASP.NET Application which is hosted on "Remote IIS Server"
    How to Set Up SSL on IIS 7
  • 原文地址:https://www.cnblogs.com/attilax/p/15199539.html
Copyright © 2011-2022 走看看