当前位置:  技术问答>linux和unix

谁比较熟悉C下的正则表达式编程,帮个忙

    来源: 互联网  发布时间:2015-07-17

    本文导语:  目标字符  目标字符  目标字符  有很多这样的连接(我只列了3个),我想把上面所有的“目标字符”(可能不同),取出来?用C下的正则库。regcomp regexec  请教高手,我应该如何做。 | 我写...

目标字符 

目标字符 

目标字符 

有很多这样的连接(我只列了3个),我想把上面所有的“目标字符”(可能不同),取出来?用C下的正则库。regcomp regexec 

请教高手,我应该如何做。

|
我写的对sscanf();的扩展,你仔细阅读一下,我以前用的分隔符是',';现在给你改成了'>'.
注意在分隔符'>'前后不能有空格,这是此函数的缺点,你有兴趣的话完善一下,互相进步.

void sscanfx(char *buf, char *format, ...)
{
     char *bf=0;
     char *p=0;
     char *pp=0;
     char *qq=0;
     int len=0;
     int jmp=0;

     va_list ap;
     va_start(ap, format);

     len=strlen(buf)+1;
     bf=(char *)malloc(len);
     memset(bf, 0, len);
     memcpy(bf, buf, len);
     qq=bf;

     do
     {
              if (*format!='%') pp=strchr(format, '%'), jmp=pp-format, format=pp, bf+=jmp;
              if (format==0) break;
      if (strncmp(format, "%s", strlen("%s"))==0)
      {
          p=strchr(bf, '>');
          if (p) *p=0;
          else break;
                  sscanf(bf, "%s", va_arg(ap, char*));
      }
      else if (strncmp(format, "%i", strlen("%i"))==0)
      {
          p=strchr(bf, '>');
          if (p) *p=' ';
          else break;
                  sscanf(bf, "%i", va_arg(ap, int*));
      }
      else if (strncmp(format, "%d", strlen("%d"))==0)
      {
          p=strchr(bf, '>');
          if (p) *p=' ';
          else break;
                  sscanf(bf, "%d", va_arg(ap, int*));
      }
      else if (strncmp(format, "%x", strlen("%x"))==0)
      {
          p=strchr(bf, '>');
          if (p) *p=' ';
          else break;
                  sscanf(bf, "%x", va_arg(ap, int*));
      }
      else if (strncmp(format, "%X", strlen("%X"))==0)
      {
          p=strchr(bf, '>');
          if (p) *p=' ';
          else break;
                  sscanf(bf, "%X", va_arg(ap, int*));
      }
      bf=p+1;
      format+=3;
     }while(*bf);

     if (format)
     {
          if (strncmp(format, "%s", strlen("%s"))==0) sscanf(bf, "%s", va_arg(ap, char*));
          else if (strncmp(format, "%i", strlen("%i"))==0) sscanf(bf, "%i", va_arg(ap, int*));
          else if (strncmp(format, "%d", strlen("%d"))==0) sscanf(bf, "%d", va_arg(ap, int*));
          else if (strncmp(format, "%x", strlen("%x"))==0) sscanf(bf, "%x", va_arg(ap, int*));
          else if (strncmp(format, "%X", strlen("%X"))==0) sscanf(bf, "%X", va_arg(ap, int*));
     }

     va_end(ap);
     free(qq);
}

Example:

int main()
{
char s1[256];
char s2[256];
memset(s1, 0, sizeof(s1));
memset(s1, 0, sizeof(s1));

char *buf="目标字符";
sscanfx(buf, "%s>%s", s1, s2);
}

|
while(!feof(infile))
{
     fscanf(infile,"%[^]",string[i]);
}

|
用regex:
(.*)

|
什么是正则表达式??

|
你好。C/C++支持正则表达式?请好心人提供使用步骤或相关线索!!

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux下的串口编程比较熟悉,麻烦帮忙!
  • 高分求助:哪位大虾对resin的设置比较熟悉?请进!
  • 做过SNMP或者对SNMP比较熟悉的高手请进。
  • 有谁对ns比较熟悉?
  • 谁多linux下的anjuta这个工具比较熟悉的?
  • 对shell比较熟悉的进
  • shell 比较熟悉的进
  • 我想搭建一个EJB的环境,请帮我推荐用什么比较好,只是为了熟悉和学习的。
  • 假设现在对且仅对java基础比较熟悉(通过scjp),要做一个java proxy的软件,步聚是什么?
  • 哪位大哥对“arm-linux的页表映射”比较熟悉啊?
  • 哪位大哥对“arm-linux的页表映射”比较熟悉啊?
  • 想学linux !!!!!!!对linux系统,编程都不怎么熟悉,想学学!!大家可否推荐比较好的书 啊!!
  • 对c++比较熟悉,想再学一门java, 请提意见
  • 有哪位大虾对MySql比较熟悉呀,我怎么连接不上数据库啊?
  • 请问谁对用blowfish来做JAVA的加密解密比较熟悉,请帮忙写个文本的加密解密类,(我这有一个但是写得不很成熟不能解密)
  • 谁对java的图形技术比较熟悉的帮帮忙。
  • C++ Maps 成员 key_comp():返回比较元素key的函数
  • 你们看是不是可以这样理解:在用来进行两个对象的比较时,==操作符用来比较两个对象的引用地址,而equals()用来比较两个对象的值。
  • C++ Maps 成员 value_comp():返回比较元素value的函数
  • 问一下,现在比较新比较好的MYSQL版本和JDBC版本
  • C++ MultiMaps 成员 key_comp():返回比较key的函数
  • SOCKET 比较是在比较什么 急
  • C++ MultiMaps 成员 value_comp():返回比较元素value的函数
  • 问一个比较简单的问题 frame 的 setSize()放在那里比较合适
  • C++ Double Ended Queues(双向队列) 成员 Operators:比较和赋值双向队列
  • 大家推荐一下有关LINUX7有关的网络编程的书。最好是比较全面的!比较经典的。
  • C++ Stacks(堆栈) 成员 操作:比较和分配堆栈
  • 用java读一个比较大的文本文件(几百k~几M)怎么才能比较快?
  • C++ Strings(字符串) 成员 Operators:操作符,用于字符串比较和赋值
  • "400分给有比较好的字符串比较的算法的朋友"要结帖,想做笔迹保留的不可漏看哦
  • C++ Strings(字符串) 成员 compare():比较两个字符串


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3