c语言正则表达式匹配URL问题
2014-03-20 14:01
471 查看
自己用socket写了一个小程序去获取网站的源代码后,用pcre去获取网站的URL
,有以下疑问:
部分源码:
[/code]执行结果为:
$ 0: http://s1.bdstatic.com/r/www/cache/static/global/img/icons_4879d3b8.png
$ 1: bdstatic.
$ 2: /r/www/cache/static/global/img/icons_4879d3b8.png
但是我用网上的正则表达式测试工具一样的正则表达式一样的文本出现的结果如下:
http://s1.bdstatic.com/r/www/cache/static/global/img/icons_4879d3b8.png http://s1.bdstatic.com/r/www/cache/static/global/img/icons_5a07887b.gif http://s1.bdstatic.com/r/www/cache/static/global/img/icons_4879d3b8.png http://s1.bdstatic.com/r/www/cache/static/global/img/icons_5a07887b.gif http://www.baidu.com/img/sug_bd.png http://s1.bdstatic.com/r/www/cache/static/global/img/wsCloseBtn2_4a84c812.png http://www.baidu.com/ http://www.baidu.com/s? http://www.baidu.com/s? http://www.baidu.com/gaoji/preferences.html
。。。。
问什么会有这么大的差别啊。
,有以下疑问:
部分源码:
pcre *re; const char *error; int erroffset; int ovector[5000]; int rc, i; char pattern [] = "http://([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%%&=]*)?"; if(NULL == (re = pcre_compile(pattern,0,&error,&erroffset,NULL))) { printf("%d:%s\n", erroffset,error); return 1; } rc = pcre_exec(re,NULL,sendbuf,strlen(sendbuf),0,0,ovector,5000); if (rc < 0) { //如果没有匹配,返回错误信息 if (rc == PCRE_ERROR_NOMATCH) printf("Sorry, no match ...\n"); else printf("Matching error %d\n", rc); pcre_free(re); return 1; } for (i = 0; i < rc; i++) { //分别取出捕获分组 $0整个正则公式 $1第一个() char *substring_start = sendbuf + ovector[2*i]; int substring_length = ovector[2*i+1] - ovector[2*i]; printf("$%2d: %.*s\n", i, substring_length, substring_start); } pcre_free(re);
[/code]执行结果为:
$ 0: http://s1.bdstatic.com/r/www/cache/static/global/img/icons_4879d3b8.png
$ 1: bdstatic.
$ 2: /r/www/cache/static/global/img/icons_4879d3b8.png
但是我用网上的正则表达式测试工具一样的正则表达式一样的文本出现的结果如下:
http://s1.bdstatic.com/r/www/cache/static/global/img/icons_4879d3b8.png http://s1.bdstatic.com/r/www/cache/static/global/img/icons_5a07887b.gif http://s1.bdstatic.com/r/www/cache/static/global/img/icons_4879d3b8.png http://s1.bdstatic.com/r/www/cache/static/global/img/icons_5a07887b.gif http://www.baidu.com/img/sug_bd.png http://s1.bdstatic.com/r/www/cache/static/global/img/wsCloseBtn2_4a84c812.png http://www.baidu.com/ http://www.baidu.com/s? http://www.baidu.com/s? http://www.baidu.com/gaoji/preferences.html
。。。。
问什么会有这么大的差别啊。
相关文章推荐
- Insertion Sort List (LeetCode)
- C语言中的字符串截取函数
- C语言中的字符串截取函数
- 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件
- c++ 编译时报错 "Array initializer must be an initializer list or string literal"
- C++的基础,平时随便写的一些代码
- C++中的IO库(四)
- 2012C++第8周项目1 - 实现复数类中的运算符重载 【项目1-实现复数类中的运算符重载】
- C++虚函数入门
- 用C++写的一个输入分数的平均值
- C++ 什么是句柄?为什么会有句柄?HANDLE
- 第一章 C语言概述
- C++学习之虚继承的概念
- 手动添加C++类,基类为CView后电脑CPU占用率猛增
- 用C++写的一个第一个能除以7的整数
- C语言打印字符串实例
- C++,STL里的sort类全部函数简介
- MFC音乐播放器,界面漂亮,功能齐全+源码下载
- boost递归遍历文件夹
- C++实现的双链表通用模板