puts ("cannot compile expression \"[a-f]*\"");
puts ("cannot compile the regular expression");
main (int argc, char *argv[]){  regex_t re;  regmatch_t mat[10];  int i, j, ret = 0;  char *locales[] = { "C", "de_DE.UTF-8" };  char *string = "http://www.regex.com/pattern/matching.html#intro";  regmatch_t expect[10] = {    { 0, 48 }, { 0, 5 }, { 0, 4 }, { 5, 20 }, { 7, 20 }, { 20, 42 },    { -1, -1 }, { -1, -1 }, { 42, 48 }, { 43, 48 } };  for (i = 0; i < sizeof (locales) / sizeof (locales[0]); ++i)    {      if (setlocale (LC_ALL, locales[i]) == NULL)	{	  puts ("cannot set locale");	  ret = 1;	}      else if (regcomp (&re,			"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?",			REG_EXTENDED) != REG_NOERROR)	{	  puts ("cannot compile expression \"[a-f]*\"");	  ret = 1;	}      else if (regexec (&re, string, 10, mat, 0) == REG_NOMATCH)	{	  puts ("no match");	  ret = 1;	}      else	{	  if (! memcmp (mat, expect, sizeof (mat)))	    printf ("matching ok for %s locale\n", locales[i]);	  else	    {	      printf ("matching failed for %s locale:\n", locales[i]);	      ret = 1;	      for (j = 0; j < 9; ++j)		if (mat[j].rm_so != -1)		  printf ("%d: %.*s\n", j, mat[j].rm_eo - mat[j].rm_so,			  string + mat[j].rm_so);	    }	}    }  return ret;}