【发布时间】:2018-08-17 15:44:13
【问题描述】:
假设我有一个html源的字符串,我想写一个循环来查找所有具有特定类名的链接,例如:
<a class="i-e" href="DATA IM INTERESTED IN">
我想将找到的所有链接存储到一个列表中。
【问题讨论】:
-
你能告诉我们你已经尝试过什么吗?
假设我有一个html源的字符串,我想写一个循环来查找所有具有特定类名的链接,例如:
<a class="i-e" href="DATA IM INTERESTED IN">
我想将找到的所有链接存储到一个列表中。
【问题讨论】:
如果你不想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 ;
}
输出是这样的
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
【讨论】:
1.开始一个循环直到EOF 2. 捕获所需的字符/单词并收集到您想要的位置(像 CList 这样的字符串列表)。 3. 或者,收集的列表可以保存到另一个文件中
【讨论】: