Expressão regular de Posix não-gananciosa

Existe uma maneira de usar uma expressão regular não-gulosa em C como se pode usar em Perl? Eu tentei várias coisas, mas na verdade não está funcionando.

Atualmente, estou usando este regex que corresponde a um endereço IP e à solicitação HTTP correspondente, mas é ganancioso, embora eu esteja usando o *:

([0-9]{1,3}(\\.[0-9]{1,3}){3})(.*?)HTTP/1.1

Neste exemplo, ele sempre corresponde à string inteira:

#include <regex.h>
#include <stdio.h>

int main() {

    int a, i;
    regex_t re;
    regmatch_t pm;
    char *mpages = "TEST 127.0.0.1 GET /test.php HTTP/1.1\" 404 525 \"-\" \"Mozilla/5.0 (Windows NT  HTTP/1.1 TEST";

    a = regcomp(&re, "([0-9]{1,3}(\\.[0-9]{1,3}){3})(.*?)HTTP/1.1", REG_EXTENDED);

    if(a!=0)
        printf(" -> Error: Invalid Regex");

    a = regexec(&re, &mpages[0], 1, &pm, REG_EXTENDED);

    if(a==0) {

        for(i = pm.rm_so; i < pm.rm_eo; i++)
            printf("%c", mpages[i]);
        printf("\n");
    }
    return 0;
}

$ ./regtest

127.0.0.1 GET /test.php HTTP / 1.1 "404 525" - "" Mozilla / 5.0 (HTTP / 1.1 do Windows NT

questionAnswers(5)

yourAnswerToTheQuestion