Advertisement
imsolty

Untitled

Feb 26th, 2020
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.92 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement