需求:在一段HTML里寻找超级链接中(正文文本)域名。
例如HTML内容如下:
<div id="bdfs0" class="EC_im EC_fr EC_PP EC_idea1017 "><a id="dfs0" class="EC_t EC_BL" onmousedown="return c({'fm':'im','title':this.innerHTML,'url':this.href,'p1':1})" href="http://www.baidu.com/baidu.php?url=zx6K00KyXs40Q86kRjYK5CXfuZ-Yhk3pujbXdk6f0Ex7QN3XNuAjwnSYSbeIYBOzZw2ezRQDFiGIKgR5iDXyeTCNEPl_Mr-LmZ3fzxORWyM-pF2xYZEQkz-2sFQ3htQuFy5nr9Y.0b_a7hQwfHjHKUQYI3LHRrgDk3q5iGyAp7BEI3ded7.U1Yk0ZDqknLw8UQBzVHiksKY5THPYUhz3_oRY_T0pyYqnW0k0ATqTZPbIj00IybqTv7VgLN-gvPEUAqz0ZKGujYkrfKWpyfqPHR0UgfqnH0kPsKopHYs0ZFY5iYk0ANGujY1PHTsg1cLP1IxnHf1P7tzrH6sg1ndPjm0mhbqnHmk0AdW5Hn3n10YPHDv0Z7spyfqn0Kkmv-b5H00ThIYmyTqn0KEIhsq0A7B5HKxn0K-ThTqn0KsTjYs0A4vTjYsQW0snj0snj0s0AdYTjYs0ZFJ5H00uANv5gKW0ZwdT1YkPj6YPHcsnWnsPHcznjTvPWRsrfKBUjYs0APzm1Y1PjT3rf" target="_blank"><font color=#CC0000>耐压测试仪</font>-上海精密仪器仪..</a><br><a class="EC_BL EC_desc" href="http://www.baidu.com/baidu.php?url=zx6K00KyXs40Q86kRjYK5CXfuZ-Yhk3pujbXdk6f0Ex7QN3XNuAjwnSYSbeIYBOzZw2ezRQDFiGIKgR5iDXyeTCNEPl_Mr-LmZ3fzxORWyM-pF2xYZEQkz-2sFQ3htQuFy5nr9Y.0b_a7hQwfHjHKUQYI3LHRrgDk3q5iGyAp7BEI3ded7.U1Yk0ZDqknLw8UQBzVHiksKY5THPYUhz3_oRY_T0pyYqnW0k0ATqTZPbIj00IybqTv7VgLN-gvPEUAqz0ZKGujYkrfKWpyfqPHR0UgfqnH0kPsKopHYs0ZFY5iYk0ANGujY1PHTsg1cLP1IxnHf1P7tzrH6sg1ndPjm0mhbqnHmk0AdW5Hn3n10YPHDv0Z7spyfqn0Kkmv-b5H00ThIYmyTqn0KEIhsq0A7B5HKxn0K-ThTqn0KsTjYs0A4vTjYsQW0snj0snj0s0AdYTjYs0ZFJ5H00uANv5gKW0ZwdT1YkPj6YPHcsnWnsPHcznjTvPWRsrfKBUjYs0APzm1Y1PjT3rf" target="_blank" id="bdfs0" onmousedown="return c({'fm':'im','title':this.innerHTML,'url':this.href,'p1':1,'rsv_ct':'d'})"><font size="-1" >咨询热线:021-65730171.接地电阻<font color=#CC0000>测试仪</font>/接地电阻表,绝缘电阻<font color=#CC0000>测试仪</font>/绝缘电阻表,</font><br><font size="-1" class="EC_url">www.canytec.com.cn</font></a><span class="icons EC_PP"><a style="cursor:pointer;text-decoration:none;" href="http://trust.baidu.com/vcard/?id=ef6b817356c74744c2c8142179f321ba97010019&url=zx6K00KyXs40Q86kRjYK5CXfuZ-Yhk3pujbXdk6f0Ex7QN3XNuAjwnSYSbeIYBOzZw2ezRQDFiGIKgR5iDXyeTCNEPl_Mr-LmZ3fzxORWyM-pF2xYZEQkz-2sFQ3htQuFy5nr9Y.7b_a7hQwfHjHKUQYI3LHRrgDk3q5iGyAp7BEI3ded0.U1Yk0ZDqknLw8UQBzVHiksKY5THPYUhz3_oRY_T0pyYqnW0k0ATqTZPbIj00IybqTv7VgLN-gvPEUAqz0ZKGujYkrfKWpyfqPHR0UgfqnH0kPsKopHYs0ZFY5iYk0ANGujY1PHTsg1cLP1IxnHf1P7tzrH6sg1ndPjm0mhbqnHmk0AdW5Hn3n10YPHDv0Z7spyfqn0Kkmv-b5H00ThIYmyTqn0KEIhsq0A7B5HKxn0K-ThTqn0KsTjYs0A4vTjYsQW0snj0snj0s0AdYTjYs0ZFJ5H00uANv5gKW0ZwdT1YkPj6YPHcsnWnsPHcznjTvPWRsrfKBUjYs0APzm1Y1PjT3rf&dataTime=51" target="_blank" onmousedown="return c({'title':this.innerHTML,'url':this.href,'fm':'im','rsvMt':'1017','p1':'1'});" class="c-icon icon-certify c-icon-v efc-cert" data-renzheng="{title: '上海精密仪器仪表有限公司:',favorite: {fm: 'im',rsvMt: '',p1: '1',url: 'http://i.baidu.com/myfavorite/set?'},appraise: {fm: 'im',rsvMt: '',p1: '1',url: 'http://trust.baidu.com/womc/comt/?'},report: {fm: 'im',rsvMt: '',p1: '1',url: 'http://baozhang.baidu.com/guarantee/accu/?'},identity: {a: {fm: 'im',rsvMt: '1017',p1:'1',url: 'http://trust.baidu.com/vcard/?id=ef6b817356c74744c2c8142179f321ba97010019&dataTime=51'}, img: '',text: '',credit: '5'}}" data-tip-limite="true" data-tooltips="bc"></a> </span></div>
C++函数:
/* 功能:查找一段HTML代码中超级链接<a><font>xxx.com</font></a>第一个出现的域名【例:xxx.com等】 By Dewei 2013-10-22 用法: #include <boost/regex.hpp> std::string str_out; find_first_domain(".....", &str_out); 参数:原始HTML代码,输出找到的域名 返回:找到返回true,否则返回false */ bool find_first_domain(const std::string &str_src, std::string &str_out) { boost::regex expression("<a(.*?)href=\"([^\n\t\f\r \"]+?)\"([^>]*?)>(.*?)</a>", boost::regex::icase|boost::regex::perl); boost::smatch what_match; std::string::const_iterator const_iter = str_src.begin(); std::string::const_iterator const_iter_end = str_src.end(); str_out.clear(); while(boost::regex_search(const_iter, const_iter_end, what_match, expression)) { std::string str_all(what_match[0].first, what_match[0].second); std::string str_fordomain(what_match[4].first, what_match[4].second); //找到匹配的<a>xxxx</a> if (!str_fordomain.empty()) { boost::cmatch what_match; std::string hostname = "(?:[a-z0-9](?:[-a-z0-9]*[a-z0-9])?\\.)+(?:com|net|edu|biz|gov|asia|org|in(?:t|fo)|(?-i:[a-z][a-z]))"; boost::regex expression(hostname, boost::regex::icase|boost::regex::perl); if (boost::regex_search(str_fordomain.c_str(), what_match, expression)) { str_out.assign(what_match[0].first, what_match[0].second); return true; } } const_iter = what_match[0].second; } return false; }
相关推荐
Java代码调用HTML5中的JS函数算法,这样就可以轻松解密..
Win32.pas API函数的简单调用,如建立进程,建立文件映射,建立、读取管道(可以捕捉DOS程序输出)等...纯Pascal代码的快速压缩解压单元,压缩率和速度都不错。 FastStringFuncs.pas 基于FastStrings.pas单元的应用。
VB 查找函数Find VB 查找函数Find VB 查找函数Find
C#实现递归查找文件函数源代码,很实用的!
C函数查找文件,可帮助初学者快速熟悉C语言。
目前常用的优化标准测试函数及MATLAB代码 目前常用的优化标准测试函数及MATLAB代码 目前常用的优化标准测试函数及MATLAB代码 目前常用的优化标准测试函数及MATLAB代码
HTML5数学函数公式计算代码基于Bootstrap.3.3.4制作,有五次函数、三角函数计算功能,可输出图像。
PHP获取网址的顶级域名函数 目前国际顶级域名有:com|edu|gov|int|mil|net|org|biz|info|pro|name|museum|coop|aero|xxx|idv|mobi|cc|me 地域型域名比较多,应该是每个国家地区都会有吧,有心可以去收集,不过据我...
Opencv中imwrite函数源代码,Opencv中imwrite函数源代码,Opencv中imwrite函数源代码
完整initializega函数代码
查找中间内容函数查找中间内容函数查找中间内容函数查找中间内容函数查找中间内容函数查找中间内容函数
C strstr字符串查找函数优化,解决查找中文汉字匹配存在错误BUG问题。支持GBK、GB18030字符串。
优化算法测试函数MATLAB代码完整版,包含完整的MATLAB代码、数据及算法描述,都在这里了
动态链接库输出函数的动态加载C++源代码程序小实例
EXCEL中用自定义函数分别提取超级链接的文字和链接,非常方便实用。用到VBA的简单语句。
php截取html源代码的简单函数simplehtmldom
在 matlab function模块中编写的饱和函数代码,可以直接移植到模块中,运行可靠,并且可以根据需求更改斜率。
网上只看到有通配符查找,返回boolean值的,为进行补充,单独写了一个通配符查找单元MatchFind,主要的为MatchFindStr(MainStr,SubStr)函数,返回符合条件的通配符的字符。 奇怪的是在winxp下,微软的查找中文使用...
代码中,我们定义了一个函数模板 findMax(),用于在给定的容器中查找最大值。该函数模板通过一个模板参数 T 来表示容器中元素的类型。 函数模板 findMax() 首先初始化 maxVal(或 maxStr)为容器中的第一个值,然后...
在具有一定规模的代码中(C 语言),调用第三方动态库中的函数来完成一些功能,是很常见的工作场景。 假设现在有一项任务:需要在调用某个动态库中的某个函数的之前和之后,做一些额外的处理工作。 这样的需求一般称作...