regerror() — Return Error Message for Regular Expression

Format

#include <regex.h>
size_t regerror(int errcode,  const regex_t *preg,
               char *errbuf, size_t errbuf_size);

Language Level: XPG4

Threadsafe: Yes.

Locale Sensitive: The behavior of this function might be affected by the LC_CTYPE and LC_COLLATE categories of the current locale. This function is not available when LOCALETYPE(*CLD) is specified on the compilation command. For more information, see Understanding CCSIDs and Locales.

Description

The regerror() function finds the description for the error code errcode for the regular expression preg. The description for errcode is assigned to errbuf. The errbuf_size value specifies the maximum message size that can be stored (the size of errbuf). The description strings for errcode are:

errcode Description String
REG_NOMATCH regexec() failed to find a match.
REG_BADPAT Invalid regular expression.
REG_ECOLLATE Invalid collating element referenced.
REG_ECTYPE Invalid character class type referenced.
REG_EESCAPE Last character in regular expression is a \.
REG_ESUBREG Number in \digit invalid, or error.
REG_EBRACK [] imbalance.
REG_EPAREN \( \) or () imbalance.
REG_EBRACE \{ \} imbalance.
REG_BADBR Expression between \{ and \} is invalid.
REG_ERANGE Invalid endpoint in range expression.
REG_ESPACE Out of memory.
REG_BADRPT ?, *, or + not preceded by valid regular expression.
REG_ECHAR Invalid multibyte character.
REG_EBOL ^ anchor not at beginning of regular expression.
REG_EEOL $ anchor not at end of regular expression.
REG_ECOMP Unknown error occurred during regcomp() call.
REG_EEXEC Unknown error occurred during regexec() call.

Return Value

The regerror() returns the size of the buffer needed to hold the string that describes the error condition. The value of errno may be set to ECONVERT (conversion error).

Example that uses regerror()

This example compiles an invalid regular expression, and prints an error message using the regerror() function.

#include <regex.htm>
#include <stdio.h>
#include <stdlib.h>
 
int main(void)
{
   regex_t preg;
   char    *pattern = "a[missing.bracket";
   int     rc;
   char    buffer[100];
 
   if (0 != (rc = regcomp(&preg, pattern, REG_EXTENDED))) {
      regerror(rc, &preg, buffer, 100);
      printf("regcomp() failed with '%s'\n", buffer);
      exit(EXIT_FAILURE);
   }
   return 0;
 
/**********************************************************
      The output should be similar to:
 
      regcomp() failed with '[] imbalance.'
   **********************************************************/
}

Related Information



[ Top of Page | Previous Page | Next Page | Contents | Index ]