PCRE2_PATTERN_INFO(3)

πŸ’– PCRE2_PATTERN_INFO(3) πŸ’–

bestie, welcome to the PCRE2 Library Functions Manual β€” no cap, this one is all about peeking at the info inside a compiled pattern. ✨


πŸŽ€ NAME πŸŽ€

PCRE2 - Perl-compatible regular expressions (revised API)


✨ SYNOPSIS ✨

okay so, the synopsis is literally:

#include <pcre2.h>

int pcre2_pattern_info(const pcre2_code *code, uint32_t what,
   void *where);

πŸ’… DESCRIPTION πŸ’…

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

  • code β€” Pointer to a compiled regular expression pattern
  • what β€” What information is required
  • where β€” Where to put the information

🌸 recognized what values 🌸

The recognized values for the what argument, and the information they request, are as follows:

  • PCRE2_INFO_ALLOPTIONS β€” Final options after compiling
  • PCRE2_INFO_ARGOPTIONS β€” Options passed to pcre2_compile()
  • PCRE2_INFO_BACKREFMAX β€” Number of highest backreference
  • PCRE2_INFO_BSR β€” What \R matches:
    • PCRE2_BSR_UNICODE β€” Unicode line endings
    • PCRE2_BSR_ANYCRLF β€” CR, LF, or CRLF only
  • PCRE2_INFO_CAPTURECOUNT β€” Number of capturing subpatterns
  • PCRE2_INFO_DEPTHLIMIT β€” Backtracking depth limit if set, otherwise PCRE2_ERROR_UNSET
  • PCRE2_INFO_EXTRAOPTIONS β€” Extra options that were passed in the compile context
  • PCRE2_INFO_FIRSTBITMAP β€” Bitmap of first code units, or NULL
  • PCRE2_INFO_FIRSTCODETYPE β€” Type of start-of-match information:
    • 0 β€” nothing set
    • 1 β€” first code unit is set
    • 2 β€” start of string or after newline
  • PCRE2_INFO_FIRSTCODEUNIT β€” First code unit when type is 1
  • PCRE2_INFO_FRAMESIZE β€” Size of backtracking frame
  • PCRE2_INFO_HASBACKSLASHC β€” Return 1 if pattern contains \C
  • PCRE2_INFO_HASCRORLF β€” Return 1 if explicit CR or LF matches exist in the pattern
  • PCRE2_INFO_HEAPLIMIT β€” Heap memory limit if set, otherwise PCRE2_ERROR_UNSET
  • PCRE2_INFO_JCHANGED β€” Return 1 if (?J) or (?-J) was used
  • PCRE2_INFO_JITSIZE β€” Size of JIT compiled code, or 0
  • PCRE2_INFO_LASTCODETYPE β€” Type of must-be-present information:
    • 0 β€” nothing set
    • 1 β€” code unit is set
  • PCRE2_INFO_LASTCODEUNIT β€” Last code unit when type is 1
  • PCRE2_INFO_MATCHEMPTY β€” 1 if the pattern can match an empty string, 0 otherwise
  • PCRE2_INFO_MATCHLIMIT β€” Match limit if set, otherwise PCRE2_ERROR_UNSET
  • PCRE2_INFO_MAXLOOKBEHIND β€” Length (in characters) of the longest lookbehind assertion
  • PCRE2_INFO_MINLENGTH β€” Lower bound length of matching strings
  • PCRE2_INFO_NAMECOUNT β€” Number of named subpatterns
  • PCRE2_INFO_NAMEENTRYSIZE β€” Size of name table entries
  • PCRE2_INFO_NAMETABLE β€” Pointer to name table
  • PCRE2_CONFIG_NEWLINE β€” Code for the newline sequence:
    • PCRE2_NEWLINE_CR
    • PCRE2_NEWLINE_LF
    • PCRE2_NEWLINE_CRLF
    • PCRE2_NEWLINE_ANY
    • PCRE2_NEWLINE_ANYCRLF
    • PCRE2_NEWLINE_NUL
  • PCRE2_INFO_RECURSIONLIMIT β€” Obsolete synonym for PCRE2_INFO_DEPTHLIMIT
  • PCRE2_INFO_SIZE β€” Size of compiled pattern

πŸ¦‹ the where pointer tea πŸ¦‹

If where is NULL, the function returns the amount of memory needed for the requested information, in bytes. Otherwise, the where argument must point to an unsigned 32-bit integer (uint32_t variable), except for the following what values, when it must point to a variable of the type shown:

  • PCRE2_INFO_FIRSTBITMAP β€” const uint8_t *
  • PCRE2_INFO_JITSIZE β€” size_t
  • PCRE2_INFO_NAMETABLE β€” PCRE2_SPTR
  • PCRE2_INFO_SIZE β€” size_t

🌈 return values / yield 🌈

The yield of the function is zero on success or:

  • PCRE2_ERROR_NULL β€” the argument code is NULL
  • PCRE2_ERROR_BADMAGIC β€” the "magic number" was not found
  • PCRE2_ERROR_BADOPTION β€” the value of what is invalid
  • PCRE2_ERROR_BADMODE β€” the pattern was compiled in the wrong mode
  • PCRE2_ERROR_UNSET β€” the requested information is not set

There is a complete description of the PCRE2 native API in the pcre2api page and a description of the POSIX API in the pcre2posix page.

bestie, that’s literally the whole page πŸ’– no cap.

okay bye bestie 🫢 β€” this manual page is from PCRE2 10.47, dated 14 February 2019. πŸ’…

πŸ“¦ where this page comes from