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 (&reg, "(http):(//)([[:alnum:].~?&%#_=-]+)\\/?.*", REG_EXTENDED);
  regsuccess = regexec (&reg, str, nmatch, match, 0);
  regfree (&reg);

  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

戻る

inserted by FC2 system