我只需要提取 URI 的第二个路径段,即给定以下 URI:
/first/second/third/fourth/...
正则表达式应该从 URI 中提取second
字符串。非常感谢对解决方案正则表达式的解释。
我正在使用 POSIX 投诉正则表达式库。
编辑: Gumbo 给出的解决方案在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
。