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 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试