SHARE
TWEET

Untitled

imsolty Feb 26th, 2020 85 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <regex.h>
  3. #include <string.h>
  4. #include <stdlib.h>
  5.  
  6. #define pattern "([a-z]+\\:\\/\\/)?(www\\.)?(([a-zA-Z]+\\.)+)([a-zA-Z]+)(\\/)(([a-zA-Z0-9]+\\/)*)([a-zA-Z0-9]+)(\\.[a-zA-Z0-9]+)"
  7.  
  8. char** write(int* num){
  9.     int maxsize=100;
  10.     int maxsizein=100;
  11.     int N=1;
  12.     char** text=malloc(maxsize*sizeof(char*));
  13.     int Nin=1;
  14.     text[N-1]=malloc(maxsizein*sizeof(char));
  15.     while(1){
  16.         if (Nin==maxsizein){
  17.             maxsizein=maxsizein*2;
  18.             text[N-1]=realloc(text[N-1],maxsizein*sizeof(char));
  19.         }
  20.         scanf("%c",&text[N-1][Nin-1]);
  21.         if(!strcmp(text[N-1],"Fin.")){
  22.             break;
  23.         }
  24.         if(text[N-1][Nin-1]=='\n'){
  25.             if (Nin+1==maxsizein){
  26.                 maxsizein=maxsizein*2;
  27.                 text[N-1]=realloc(text[N-1],maxsizein*sizeof(char));
  28.             }
  29.             text[N-1][Nin]='\0';
  30.             N++;
  31.             if (N==maxsize){
  32.                 maxsize=maxsize*2;
  33.                 text=realloc(text,maxsize*sizeof(char*));
  34.             }  
  35.             Nin=1;
  36.             text[N-1]=malloc(maxsizein*sizeof(char));
  37.             continue;
  38.         }
  39.         if (Nin+1==maxsizein){
  40.             maxsizein=maxsizein*2;
  41.             text[N-1]=realloc(text[N-1],maxsizein*sizeof(char));
  42.         }
  43.         text[N-1][Nin]='\0';
  44.         Nin++;
  45.     }
  46.     *num=N;
  47.     return text;
  48. }
  49.  
  50. int main(){
  51.     int N=0;
  52.     char** txt=write(&N);
  53.  
  54.     regex_t preg;
  55.     int err = regcomp(&preg,pattern, REG_EXTENDED);
  56.     int regerr;
  57.     if (err != 0) {
  58.         char buff[512];
  59.         regerror(err, &preg, buff, sizeof(buff));
  60.         printf("%s\n", buff);
  61.     }
  62.     regmatch_t pm[11];
  63.     for(int j=0;j<N;j++){
  64.         regerr = regexec (&preg, txt[j], 11, pm, 0);
  65.         if (regerr == 0){
  66.             printf("\n");
  67.             for(int i=pm[3].rm_so;i<pm[3].rm_eo;i++){
  68.                 printf("%c",txt[j][i]);
  69.             }
  70.             for(int i=pm[5].rm_so;i<pm[5].rm_eo;i++){
  71.                 printf("%c",txt[j][i]);
  72.             }
  73.             printf(" - ");
  74.             for(int i=pm[9].rm_so;i<pm[9].rm_eo;i++){
  75.                 printf("%c",txt[j][i]);
  76.             }
  77.             for(int i=pm[10].rm_so;i<pm[10].rm_eo;i++){
  78.                 printf("%c",txt[j][i]);
  79.             }
  80.         }
  81.     }
  82.     regfree(&preg);
  83. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top