次の URI が与えられた場合、URI の 2 番目のパス セグメントのみを抽出する必要があります。
/first/second/third/fourth/...
second
正規表現はURI から文字列を抽出する必要があります。ソリューションの正規表現の説明をいただければ幸いです。
POSIX 準拠の正規表現ライブラリを使用しています。
編集: ガンボによって与えられた解決策はREtesterで機能します
ただし、以下のコードでは機能しないようです。
#include "regex.h"
char *regexp (const char *string, const char *patrn, int *begin, int *end){
int i, w=0, len;
char *word = NULL;
regex_t rgT;
regmatch_t match;
wsregcomp(&rgT,patrn,REG_EXTENDED);
if ((wsregexec(&rgT,string,1,&match,0)) == 0) {
*begin = (int)match.rm_so;
*end = (int)match.rm_eo;
len = *end-*begin;
word = (char*) malloc(len+1);
for (i=*begin; i<*end; i++) {
word[w] = string[i];
w++; }
word[w]=0;
}
wsregfree(&rgT);
return word;
}
int main(){
int begin = 0;
int end = 0;
char *word = regexp("/first/second/third","^/[^/]+/([^/]*)",&begin,&end);
printf("ENV %s\n",word);
}
上記のプリント/first/second
は、second
EDIT2:java.util.regex
同様
に同じ結果。