C言語で正規表現
戻る
#include <stdio.h>
#include <regex.h>
/** $Id: regex.html,v 1.1 2009/06/22 16:12:24 kishi Exp kishi $ */
int
main (void)
{
int regsuccess;
int i, j, nmatch = 5;
regex_t reg;
regmatch_t match[nmatch];
char *str = "http://blogs.yahoo.co.jp/appaloosa_909/MYBLOG/guest.html";
regcomp (®, "(http):(//)([[:alnum:].~?&%#_=-]+)\\/?.*", REG_EXTENDED);
regsuccess = regexec (®, str, nmatch, match, 0);
regfree (®);
for (i = 0; i < nmatch; i++) {
printf ("%d,%d\n", match[i].rm_so, match[i].rm_eo);
}
printf ("\n");
for (j = 0; j < nmatch; j++) {
if (match[j].rm_so >= 0 && match[j].rm_eo >= 0)
printf ("%2d: ", j);
for (i = match[j].rm_so; i < match[j].rm_eo; i++) {
putchar (str[i]);
}
putchar ('\n');
}
return 0;
}
■実行結果
$ ./regex-test.exe
http://blogs.yahoo.co.jp/appaloosa_909/MYBLOG/guest.html
0,56
0,4
5,7
7,24
-1,-1
0: http://blogs.yahoo.co.jp/appaloosa_909/MYBLOG/guest.html
1: http
2: //
3: blogs.yahoo.co.jp
戻る