Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <regex.h>
- #include <string.h>
- #include <stdlib.h>
- #define pattern "([a-z]+\\:\\/\\/)?(www\\.)?(([a-zA-Z]+\\.)+)([a-zA-Z]+)(\\/)(([a-zA-Z0-9]+\\/)*)([a-zA-Z0-9]+)(\\.[a-zA-Z0-9]+)"
- char** write(int* num){
- int maxsize=100;
- int maxsizein=100;
- int N=1;
- char** text=malloc(maxsize*sizeof(char*));
- int Nin=1;
- text[N-1]=malloc(maxsizein*sizeof(char));
- while(1){
- if (Nin==maxsizein){
- maxsizein=maxsizein*2;
- text[N-1]=realloc(text[N-1],maxsizein*sizeof(char));
- }
- scanf("%c",&text[N-1][Nin-1]);
- if(!strcmp(text[N-1],"Fin.")){
- break;
- }
- if(text[N-1][Nin-1]=='\n'){
- if (Nin+1==maxsizein){
- maxsizein=maxsizein*2;
- text[N-1]=realloc(text[N-1],maxsizein*sizeof(char));
- }
- text[N-1][Nin]='\0';
- N++;
- if (N==maxsize){
- maxsize=maxsize*2;
- text=realloc(text,maxsize*sizeof(char*));
- }
- Nin=1;
- text[N-1]=malloc(maxsizein*sizeof(char));
- continue;
- }
- if (Nin+1==maxsizein){
- maxsizein=maxsizein*2;
- text[N-1]=realloc(text[N-1],maxsizein*sizeof(char));
- }
- text[N-1][Nin]='\0';
- Nin++;
- }
- *num=N;
- return text;
- }
- int main(){
- int N=0;
- char** txt=write(&N);
- regex_t preg;
- int err = regcomp(&preg,pattern, REG_EXTENDED);
- int regerr;
- if (err != 0) {
- char buff[512];
- regerror(err, &preg, buff, sizeof(buff));
- printf("%s\n", buff);
- }
- regmatch_t pm[11];
- for(int j=0;j<N;j++){
- regerr = regexec (&preg, txt[j], 11, pm, 0);
- if (regerr == 0){
- printf("\n");
- for(int i=pm[3].rm_so;i<pm[3].rm_eo;i++){
- printf("%c",txt[j][i]);
- }
- for(int i=pm[5].rm_so;i<pm[5].rm_eo;i++){
- printf("%c",txt[j][i]);
- }
- printf(" - ");
- for(int i=pm[9].rm_so;i<pm[9].rm_eo;i++){
- printf("%c",txt[j][i]);
- }
- for(int i=pm[10].rm_so;i<pm[10].rm_eo;i++){
- printf("%c",txt[j][i]);
- }
- }
- }
- regfree(&preg);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement