需求:在一段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; }
相关推荐
《2017CEC测试函数与MATLAB代码解析》 在优化算法的研究与应用领域,CEC(Competition on Evolutionary Computation)测试函数集是一个重要的标准,它由每年的国际进化计算竞赛举办者发布,用于评估和比较各种优化...
在硬件描述语言(HDL)如Verilog中实现三角函数,可以提高计算速度并优化资源利用,尤其是在FPGA或ASIC设计中。本文将深入探讨如何用Verilog代码实现三角函数,特别是正弦函数(sin)和余弦函数(cos)。 1. **基础...
unparam go get -u github.com/mvdan/unparam报告代码中未使用的函数参数。 为了最大程度地减少误报,它会忽略以下内容:未命名和下划线参数其签名与可达的函数类型unparam相匹配的funcs go -u github....
LFM信号模糊函数Matlab代码,直接运行可用,参数可自行更改
vbAIP函数软件是一款在编程领域中用于查找和利用Visual Basic for Applications (VBA)相关函数的工具。这款软件能够帮助开发者快速定位和理解VBA中的各种函数,从而提高编程效率和代码质量。VBA是一种内置于...
《精通Windows API函数接口编程实例源代码》是一个深入学习Windows API编程的重要资源,它涵盖了大量实践案例,旨在帮助开发者熟练掌握API接口的使用技巧。Windows API是微软为开发者提供的一个平台,通过它,程序员...
3. **动态/静态链接**:根据API库的性质,可能需要动态链接(在运行时加载库)或静态链接(在编译时将库代码合并到可执行文件中)。 4. **初始化**:在使用API之前,通常需要进行初始化操作,比如打开设备、设置通信...
一种在MATLAB中利用M文件...2、按照链接博客中的方法设置好模型文件中的S函数模块。 3、用M文件编写相应的程序,设置好仿真时间,和变量如何变化等等。 4、运行M文件,用程序自动给你调参数,选择出最好的参数吧。
同时,描述中也强调了“完美的展示了hash在查询中的使用方法”,这表明源代码文件(如haship.c和randip.c)可能包含具体的哈希函数实现,以及如何在实际问题中应用这些函数。 标签“hash 散列 海量IP地址 查询”...
在Keil C51开发环境中,对于特定的嵌入式应用,有时我们需要将函数的代码定位到ROM的特定地址,以便实现对硬件的精确控制或优化内存布局。本篇文章将详细解释如何在Keil C51中实现函数的绝对地址定位。 首先,我们...
【超级玛丽C语言源代码】是一份珍贵的学习资源,它揭示了如何用C语言实现经典游戏《超级玛丽》的核心逻辑和功能。对于想深入理解游戏编程、C语言应用或者想要自己动手开发类似游戏的程序员来说,这是一个绝佳的参考...
1. **创建函数源代码**:首先,你需要编写一个包含自定义函数的Pascal源代码文件,例如`Frfun2.dpk`和`Frfuns3d.pas`中的内容。这个源代码将实现函数的具体逻辑。比如,`Frfuns3d.pas`可能包含了一个三维图表处理的...
该源代码采用C语言实现了误差函数erf(),其精度可根据参数ERF_N来调节(默认100),并且由于使用单次循环同时累加和累乘,因而避免了调用pow()函数,使得算法速度更快。该实现采用的是麦克劳林展开方法再逐项求积分...
高斯卷积模板(高斯函数)Matlab代码,可实现二维高斯卷积模板的生成功能。M文件,可用记事本打开。
在提供的压缩包文件中,很可能包含了实现上述步骤的MATLAB代码,包括enframe函数的使用示例。通过学习和理解这些代码,你可以更深入地了解语音端点检测的原理和实践方法。同时,也可以根据实际需求调整参数,优化...
在本文中,我们将深入探讨如何使用Visual C++(VC++)和Visual Studio++(VS++)调用微软的蓝牙API函数。这些API函数允许开发者直接与蓝牙设备进行通信,实现各种无线连接功能。我们将主要关注如何在不同版本的VC++...
寻找峰值算法应用广泛,matlab...压缩包中包含matlab中的findpeaks()函数的所有输入参数说明、.m源码、详细导出步骤以及导出的c++源码。 注:findpeaks()函数只支持查找波峰,如果需要查找波谷,请先取反再调用该函数。
4. **代码实现**:在C语言中,可以定义一个函数,接受角度作为输入,然后返回相应的三角函数值。这个函数首先将角度转换为弧度,接着找到最接近的两个表项,最后执行线性插值计算。 5. **性能优化**:为了进一步...
在VC++编程中,DLL(动态链接库)是一种非常重要的技术,它允许多个程序共享同一段代码和数据,从而节省内存资源并简化软件开发。回调函数则是编程中一种常见的设计模式,它允许函数将控制权返回给调用者,使得调用...
标题中的“DLL函数查看工具”指的是一个专门用来查看动态链接库(DLL)文件中包含的函数的软件。DLL是Windows操作系统中的一种共享库机制,它允许多个程序共享同一段代码和数据,从而节省内存资源并方便软件开发。...