мне нужно извлечь только второй путь сегмент URI, т.е. заданного следующую URI:Что такое регулярное выражение для извлечения второго сегмента пути URI?
/first/second/third/fourth/...
регулярное выражение должно извлечь second
строки из URI. Было бы полезно оценить объяснение решения regex.
Я использую библиотеку регулярных выражений POSIX.
EDIT: Решение дается 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
также.
Эти части называются * сегментами пути *. – Gumbo
@Gumbo - Спасибо. Отредактировал вопрос –
Жалоба? Разве вы не имеете в виду * совместимость *? Но совместим с POSIX BRE или POSIX ERE? – Gumbo