2016-07-06 9 views
1

どのようにURLに一致する/[a-z0-9]/phpmyadmin/? urlがregex = /^\/([a-z0-9])+\/phpmyadmin/gと一致する場合 次の操作のためにグループをcharにキャプチャする方法はありますか?pcreライブラリを使用してCプログラムのURLに一致する方法

それが一致した場合、たとえば、私はその後、私は正規表現/^\/([a-z0-9])+\/phpmyadmin/g に対してそれを一致させたいこの

char *url = "/zs0099/phpmyadmin"; 

を持って

char *token = "zs0099"; //(how to get this value to assigned here) 
+0

良い検索エンジンはあなたの友人です。http://www.mitchr.me/SS/exampleCode/AUPG/pcre_example.c.html – dvhh

答えて

0

ヒップ(しかし、PCREなし)、裸Cからの迅速なショット(小さなステートマシン)

#include <stdio.h> 
#include <string.h> 
#include <ctype.h> 

int isMatch(char *url, char *p) { 
    int state= 0; 
    while (*url != 0) { 
     switch (state) { 
      // first state: char must be '/' 
      case 0: 
       if (*url != '/') return 0; 
       state=1; 
       url++; 
       break; 
      // only characters and numbers are valid, another '/' ends this 
      case 1: 
       if (isalpha(*url) || isdigit(*url)) { *p++=*url; url++; break; } 
       if (*url == '/') { url++; state=2; break; } 
       return 0; // not alhanum nor '/' --> not valid; 
       break; 
      case 2: 
       *p++=0; 
       if (strcmp(url, "phpmyadmin")==0) return 1; 
       return 0; 
      } 
    } 
    return 0; 
} 

int main() { 
    char part[256]; 

    char *x1 = "/019sasA/phpmyadmin"; 
    int matches = isMatch(x1, part); 
    printf ("%s, %i --> %s \n", x1, matches , matches ? part : ""); 

    char *x2 = "/019sasA/phpadmin"; 
    matches = isMatch(x2, part); 
    printf ("%s, %i --> %s \n", x2, matches , matches ? part : ""); 

    char *x3 = "/019sa,sA/phpmyadmin"; 
    matches = isMatch(x3, part); 
    printf ("%s, %i --> %s \n", x3, matches , matches ? part : ""); 
} 

可能な問題:
"// phpMyAdminには、"(isdigit()とISNUMBER()、何が '/' 簡単に最初の状態でのみ受け付けて1つの以上の状態で固定することができる)
は "/ phpmyadminのが" 無効で有効ではありません

関連する問題