37334 2015-05-29 13:51 采纳率: 45.5%
浏览 3798

c语言regex.h正则表达式判断url

在用c语言写爬虫(入坑),想用正则表达式来判断url结果发现复杂的判断(在其他正则表达式测试工具可以正常判断出来)没法判断出来,换成简单的测试了下(代码如下匹配是简单的)可以匹配出来,复杂的:图片说明

 #include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include<string.h>
#include<regex.h>
#define MAX 1024
char* substr(const char*str, unsigned start, unsigned end)
{
  unsigned n = end - start;
  static char stbuf[256];
  strncpy(stbuf, str + start, n);
  stbuf[n+1] = '\0';
  return stbuf;
}
int main()
{
    int p;
    regex_t reg;
    regmatch_t pm[1];
    char *pattern="http://.*\"";
    FILE *fp;
    char buf[MAX];
    p=regcomp(&reg,pattern,REG_ICASE);
    if(p!=0){
    printf("error!");
    }
    if((fp=fopen("/home/wrj/3","r"))==NULL){
        printf("Fopen error!\n");
        exit(1);
    }
    while(fgets(buf,MAX,fp)){
        p=regexec(&reg,buf,1,pm,0);
        if(p==REG_NOMATCH)  continue;
        else{
            printf("%s\n",substr(buf,pm[0].rm_so,pm[0].rm_eo));
        }
    }

    fclose(fp);
    return 0;
}

这哪里有错呢?有注意到转义。。。。还是说这是regex.h的问题==

  • 写回答

4条回答 默认 最新

  • threenewbee 2015-05-29 14:00
    关注

    冒号和//都加上反斜杠。
    \:\/\/
    A-Z不是A-z

    评论

报告相同问题?

悬赏问题

  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?