一致した正規表現のみを返す方法を理解していないと思います。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);