Advertisement
bepisXDDD

regular expressions pure c

May 22nd, 2020
264
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.93 KB | None | 0 0
  1. //operation '*' for regular expression
  2. int RegularExprAsterisk(char* mask, char* remainder)
  3. {
  4.     if (*mask == '\0' || ApplyRegularExpr((mask + 1), remainder))
  5.         return 1;
  6.     else if (*remainder != '\0')
  7.         return RegularExprAsterisk(mask, (remainder + 1));
  8. }
  9.  
  10. //check if <inspected> suits the <mask>
  11. int ApplyRegularExpr(char* mask, char* inspected)
  12. {
  13.     int i = 0, curInspectedIndex = 0;
  14.     for (; *(mask + i) != '\0'; i++){
  15.         switch (*(mask + i))
  16.         {
  17.         case '*':
  18.             if (RegularExprAsterisk(mask+i, inspected+curInspectedIndex))
  19.                 return 1;
  20.             else
  21.                 return 0;
  22.             break;
  23.         case '?':
  24.             if (*(inspected+curInspectedIndex) == '\0')
  25.                 return 0;
  26.             else
  27.                 curInspectedIndex++;
  28.             break;
  29.         default:
  30.             if (*(inspected+ curInspectedIndex)!='\0' &&
  31.                 *(inspected + curInspectedIndex) == *(mask+i))
  32.                 curInspectedIndex++;
  33.             else
  34.                 return 0;
  35.             break;
  36.         }
  37.     }
  38.     return (*(inspected + curInspectedIndex) == '\0');
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement