3

一致した正規表現のみを返す方法を理解していないと思います。Webページであるファイルがあります。ページ内のすべてのリンクを取得しようとしています。正規表現は正常に機能します。しかし、それを印刷すると、その一致が発生した行が印刷されます。試合のみを表示したいだけです。グループ化できることがわかりましたので、それを試してみたところ、2 回目の printf 呼び出しで int 値が返されました。ドキュメントによると、それはオフセットです。しかし、何にオフセットしますか?その行の文字32が正規表現とは何の関係もないときに32と言うので、それも正確ではないようです。私は最初の試合を見るだけで出口を出しました。どこが間違っていますか?

  char line[1000];
  FILE *fp_original;
  fp_original = fopen (file_original_page, "r");

  regex_t re_links;
  regmatch_t group[2];
  regcomp (&re_links, "(href|src)=[\"|'][^\"']*[\"|']", REG_EXTENDED);

  while (fgets (line, sizeof line, fp_original) != NULL) {
    if (regexec (&re_links, line, 2, group, 0) == 0) {
      printf ("%s", line);
      printf ("%u\n", line[group[1].rm_so]);
      exit (1);
    }
  }

  fclose (fp_original);
4

2 に答える 2