title: Posix regular expression non-greedy
body: <p>Is there a way to use a non-greedy regular expression in C like one can use in Perl?
  I tried several things, but it's actually not working.</p>
  
  <p>I'm currently using this regex that matches an IP address and the corresponding HTTP request, but it's greedy although I'm using the *?:</p>
  
  <p><code>([0-9]{1,3}(\\.[0-9]{1,3}){3})(.*?)HTTP/1.1</code></p>
  
  <p>In this example, it always matches the whole string:</p>
  
  <pre><code>#include &lt;regex.h&gt;
  #include &lt;stdio.h&gt;
  
  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(&amp;re, "([0-9]{1,3}(\\.[0-9]{1,3}){3})(.*?)HTTP/1.1", REG_EXTENDED);
  
      if(a!=0)
          printf(" -&gt; Error: Invalid Regex");
  
      a = regexec(&amp;re, &amp;mpages[0], 1, &amp;pm, REG_EXTENDED);
  
      if(a==0) {
  
          for(i = pm.rm_so; i &lt; pm.rm_eo; i++)
              printf("%c", mpages[i]);
          printf("\n");
      }
      return 0;
  }
  </code></pre>
  
  <p>$ ./regtest</p>
  
  <p>127.0.0.1 GET /test.php HTTP/1.1" 404 525 "-" "Mozilla/5.0 (Windows NT  HTTP/1.1</p>