Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从C++;_C++_String_Find_Substring - Fatal编程技术网

C++ 从C++;

C++ 从C++;,c++,string,find,substring,C++,String,Find,Substring,假设我有一个html源字符串,我想编写一个循环来查找具有特定类名的所有链接,例如: <a class="i-e" href="DATA IM INTERESTED IN"> 我想将找到的所有链接存储到一个列表中。1.启动一个循环,直到EOF 2.捕获所需的字符/单词并在需要的地方收集(一个类似CList的字符串列表)。 3.或者,可以将收集的列表保存到另一个文件中如果不想使用HTML解析器,请实现字符串解析器 #include <iostream> #include

假设我有一个html源字符串,我想编写一个循环来查找具有特定类名的所有链接,例如:

<a class="i-e" href="DATA IM INTERESTED IN">

我想将找到的所有链接存储到一个列表中。

1.启动一个循环,直到EOF 2.捕获所需的字符/单词并在需要的地方收集(一个类似CList的字符串列表)。
3.或者,可以将收集的列表保存到另一个文件中

如果不想使用HTML解析器,请实现字符串解析器

#include <iostream>
#include <string>
#include <regex>

using namespace std ;

string html="<a class=\"i-e\" href=\"DATA IM INTERESTED IN\">\n\
<a class=\"chrome\" href=\"nono chrome\">\n\
<a class=\"i-e\" href=\"ie like1\">\n\
<a class=\"chrome\" href=\"nono chrome\">\n\
<a class=\"i-e\" href=\"ie like2\">\n\
<a class=\"chrome\" href=\"nono chrome\">\n\
<a class=\"chrome\" href=\"nono chrome\">\n\
<a class=\"i-e\" style=\"font-size:10pt;\" href=\"ie like3\">\n\
<a class=\"chrome\" href=\"nono chrome\">\n\
<a class=\"chrome\" href=\"nono chrome\">\n\
<a class=\"i-e\" href=\"ie like4\"> <a class=\"i-e\" href=\"ie like5\">\n\
";

int main() {
    smatch m, m2 ;
    regex e ( "class=\"i-e\"([^<>]+)>" ) ;  // get: href="ie like"
    regex e2 ( "href=\"(.+)\"" ) ;  // get ie like
    bool r, r2 ;

    string content ;

    int start=0 ;
    cout << "input html : " << html << endl ;
    do {
        content = html.substr(start) ;
//      cout << "content:"<<content<<endl;
        r=regex_search(content, m, e) ;
        if ( r ) {
//          cout << "search: " << r << endl ;
//          cout << "str: " << m.position() << " "<< m.str() << endl ;
            cout << "match : " << m[1] << endl ;
            r2 = regex_search((string)m[1], m2, e2) ;
            if ( r2 ) {
                cout << " URL : " <<m2[1]<<endl ;
            }
        }
        start+=m.str().length()+m.position();
    } while( r );

    return 0 ;
}
#包括
#包括
#包括
使用名称空间std;
字符串html=“\n”\
\n\
\n\
\n\
\n\
\n\
\n\
\n\
\n\
\n\
\n\
";
int main(){
smatch m,m2;
正则表达式e(“class=\“i-e\”([^]+)>”;//get:href=“ie like”
正则表达式e2(“href=\”(.+)\”;//像ie一样
布尔r,r2;
字符串内容;
int start=0;

你能告诉我们你已经尝试了什么吗?谢谢你的建议-我是这里的新手。如上所述,这可能是一篇关于负面观点的帖子:)只要你的HTML文档是众所周知的并且表现良好,这是很好的-一般来说,你不能用正则表达式正确解析HTML(尤其是发现的严重损坏的HTML)“在野外”)。
input html : <a class="i-e" href="DATA IM INTERESTED IN">
<a class="chrome" href="nono chrome">
<a class="i-e" href="ie like1">
<a class="chrome" href="nono chrome">
<a class="i-e" href="ie like2">
<a class="chrome" href="nono chrome">
<a class="chrome" href="nono chrome">
<a class="i-e" style="font-size:10pt;" href="ie like3">
<a class="chrome" href="nono chrome">
<a class="chrome" href="nono chrome">
<a class="i-e" href="ie like4"> <a class="i-e" href="ie like5">

match :  href="DATA IM INTERESTED IN"
 URL : DATA IM INTERESTED IN
match :  href="ie like1"
 URL : ie like1
match :  href="ie like2"
 URL : ie like2
match :  style="font-size:10pt;" href="ie like3"
 URL : ie like3
match :  href="ie like4"
 URL : ie like4
match :  href="ie like5"
 URL : ie like5