正規表現 -- より使いやすく
戻る
::::::::::::::
regex-test.c
::::::::::::::
#include <stdio.h>
#include <regex.h>
/** $Id: regex2.html,v 1.1 2009/06/22 16:12:24 kishi Exp kishi $ */
char** getTokens( char* input, char* pattern, int count ) {
int regsuccess;
regex_t reg;
regmatch_t match[ count ];
char **tokens = ( char ** ) malloc( count * sizeof( char * ) ) ;
regcomp ( ®, pattern, REG_EXTENDED );
regsuccess = regexec ( ®, input, count, match, 0 );
regfree ( ® );
char **ptr = tokens;
int i;
for ( i = 0;i < count;i++ ) {
int len = ( int ) ( match[ i ].rm_eo - match[ i ].rm_so + 1 );
*ptr = ( char * ) malloc ( len + 1 );
memset ( *ptr, 0, len );
memcpy ( *ptr, input + match[ i ].rm_so, len - 1 );
++ptr;
}
return tokens;
}
int
main ( void ) {
int i;
char *str = "http://blogs.yahoo.co.jp/appaloosa_909/MYBLOG/guest.html";
char *pattern = "http://([[:alnum:].~?&%#_=-\\:]+)(\\/?.*)";
char** tokens = getTokens( str, pattern, 5 );
for ( i = 0;i < 5;i++ ) {
printf( "[%2d] %s\n", i, *tokens );
++tokens;
}
return 0;
}
■実行結果
[ 0] http://blogs.yahoo.co.jp/appaloosa_909/MYBLOG/guest.html
[ 1] blogs.yahoo.co.jp
[ 2] /appaloosa_909/MYBLOG/guest.html
[ 3]
[ 4]
戻る