PCRE — Perl-compatible regular expressions

Synopsis

#include <pcre.h>

int pcre_fullinfo(const pcre *code, const pcre_extra *extra,
     int what, void *where);

int pcre16_fullinfo(const pcre16 *code, const pcre16_extra *extra,
     int what, void *where);

int pcre32_fullinfo(const pcre32 *code, const pcre32_extra *extra,
     int what, void *where);

Description

This function returns information about a compiled pattern. Its arguments are:

 code                      Compiled regular expression
 extra                     Result of pcre[16|32]_study() or NULL
 what                      What information is required
 where                     Where to put the information

The following information is available:

 PCRE_INFO_BACKREFMAX      Number of highest back reference
 PCRE_INFO_CAPTURECOUNT    Number of capturing subpatterns
 PCRE_INFO_DEFAULT_TABLES  Pointer to default tables
 PCRE_INFO_FIRSTBYTE       Fixed first data unit for a match, or
                             -1 for start of string
                                or after newline, or
                             -2 otherwise
 PCRE_INFO_FIRSTTABLE      Table of first data units (after studying)
 PCRE_INFO_HASCRORLF       Return 1 if explicit CR or LF matches exist
 PCRE_INFO_JCHANGED        Return 1 if (?J) or (?-J) was used
 PCRE_INFO_JIT             Return 1 after successful JIT compilation
 PCRE_INFO_JITSIZE         Size of JIT compiled code
 PCRE_INFO_LASTLITERAL     Literal last data unit required
 PCRE_INFO_MINLENGTH       Lower bound length of matching strings
 PCRE_INFO_MATCHEMPTY      Return 1 if the pattern can match an empty string,
                              0 otherwise
 PCRE_INFO_MATCHLIMIT      Match limit if set, otherwise PCRE_RROR_UNSET
 PCRE_INFO_MAXLOOKBEHIND   Length (in characters) of the longest lookbehind assertion
 PCRE_INFO_NAMECOUNT       Number of named subpatterns
 PCRE_INFO_NAMEENTRYSIZE   Size of name table entry
 PCRE_INFO_NAMETABLE       Pointer to name table
 PCRE_INFO_OKPARTIAL       Return 1 if partial matching can be tried
                             (always returns 1 after release 8.00)
 PCRE_INFO_OPTIONS         Option bits used for compilation
 PCRE_INFO_SIZE            Size of compiled pattern
 PCRE_INFO_STUDYSIZE       Size of study data
 PCRE_INFO_FIRSTCHARACTER      Fixed first data unit for a match
 PCRE_INFO_FIRSTCHARACTERFLAGS Returns
                                 1 if there is a first data character set, which can
                                   then be retrieved using PCRE_INFO_FIRSTCHARACTER,
                                 2 if the first character is at the start of the data
                                   string or after a newline, and
                                 0 otherwise
 PCRE_INFO_RECURSIONLIMIT    Recursion limit if set, otherwise PCRE_ERROR_UNSET
 PCRE_INFO_REQUIREDCHAR      Literal last data unit required
 PCRE_INFO_REQUIREDCHARFLAGS Returns 1 if the last data character is set (which can then
                             be retrieved using PCRE_INFO_REQUIREDCHAR); 0 otherwise

The where argument must point to an integer variable, except for the following what values:

 PCRE_INFO_DEFAULT_TABLES  const uint8_t *
 PCRE_INFO_FIRSTCHARACTER  uint32_t
 PCRE_INFO_FIRSTTABLE      const uint8_t *
 PCRE_INFO_JITSIZE         size_t
 PCRE_INFO_MATCHLIMIT      uint32_t
 PCRE_INFO_NAMETABLE       PCRE_SPTR16           (16-bit library)
 PCRE_INFO_NAMETABLE       PCRE_SPTR32           (32-bit library)
 PCRE_INFO_NAMETABLE       const unsigned char * (8-bit library)
 PCRE_INFO_OPTIONS         unsigned long int
 PCRE_INFO_SIZE            size_t
 PCRE_INFO_STUDYSIZE       size_t
 PCRE_INFO_RECURSIONLIMIT  uint32_t
 PCRE_INFO_REQUIREDCHAR    uint32_t

The yield of the function is zero on success or:

 PCRE_ERROR_NULL           the argument code was NULL
                           the argument where was NULL
 PCRE_ERROR_BADMAGIC       the "magic number" was not found
 PCRE_ERROR_BADOPTION      the value of what was invalid
 PCRE_ERROR_UNSET          the option was not set

There is a complete description of the PCRE native API in the pcreapi page and a description of the POSIX API in the pcreposix page.

Referenced By

The man pages pcre16_fullinfo(3) and pcre32_fullinfo(3) are aliases of pcre_fullinfo(3).

21 April 2014 PCRE 8.36