Я пытаюсь запустить регулярное выражение, чтобы извлечь строку из любых символов из файла, который находится между "<" и ">".Приведенное мной регулярное выражение:
[ <(.*?)>]
Однако, когда я запускаю это регулярное выражение с помощью fscanf, я получаю только «<» или «>» в качестве выходных данных для всего, что содержится в знаках.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <ctype.h>
int next_word(FILE* filename,char word[254])
{
if (fscanf(filename, "%254[<(.*?)>]", word) == 1)
{
printf("%s\n",word);
return 1;
}
else if (fscanf(filename, "%[^a-zA-Z]", word) == 1) { return 1; }
else if (fscanf(filename, "%254[a-zA-Z]", word) == 1) {return 1; }
return 0;
}
int main(int argc, char * argv[])
{
char word[254];
FILE *infile;
infile = fopen(argv[2],"r");
while(1)
{
if(next_word(infile,word) == 0)
{
break;
}
}
}
Мой входной файл выглядит следующим образом:
<test> this is a line <end>
, который дает вывод:
<
>
<
>
, но должен дать
<test>
<end>