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>
- char* input(){
- int len_sen = 15;
- char* string = calloc(len_sen, sizeof(char));
- char c;
- int i = 0;
- while((c = getchar()) != '\n'){
- if(i == len_sen - 3){
- len_sen += 10;
- string = realloc(string, len_sen);
- }
- string[i] = c;
- if(!strcmp(string, "Fin."))
- return string;
- i++;
- }
- string[i] = '\0';
- return string;
- }
- int main(){
- size_t maxGroups = 3;
- regex_t reg_comp;
- regmatch_t group_Array[maxGroups];
- char* regex_str = "(\\w+)@[\\w-]+: ?~ ?\\# (.+)";
- char* string = NULL;
- int size = 10;
- int k = 0;
- char** text = calloc(size, sizeof(char*));
- if(regcomp(®_comp, regex_str, REG_EXTENDED)){
- printf("Ошибка компиляции регулярного выражения\n");
- return 0;
- }
- if(regcomp(®_comp, regex_str, REG_EXTENDED) == REG_NOMATCH)
- printf("Cтрока не совпадает с регулярным выражением");
- while(1){
- string = input();
- if(strcmp(string, "Fin.") == 0){
- break;
- }
- if(k + 1 == size){
- size += 10;
- text = realloc(text, size*sizeof(char*));
- }
- text[k] = string;
- k++;
- }
- for(int i = 0; i < k; i++){
- if(regexec(®_comp, text[i], maxGroups, group_Array, 0) == 0){
- char* str = text[i];
- for(int j = group_Array[3].rm_so; j < group_Array[3].rm_eo; j++)
- printf("%c", str[j]);
- printf(" - ");
- for(int j = group_Array[6].rm_so; j < group_Array[6].rm_eo; j++)
- printf("%c", str[j]);
- printf("\n");
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement