PCRE2_COMPILE(3)
π PCRE2_COMPILE(3) β Library Functions Manual π
πΈ NAME πΈ
okay so this page is all about PCRE2 β Perl-compatible regular expressions (revised API) β and specifically the pcre2_compile() function. It's giving "turn my regex string into a compiled object" energy, and honestly? iconic. π
β¨ SYNOPSIS β¨
first things first, include the header and call it like this:
#include <pcre2.h>
pcre2_code *pcre2_compile(PCRE2_SPTR pattern, PCRE2_SIZE length,
uint32_t options, int *errorcode, PCRE2_SIZE *erroroffset,
pcre2_compile_context *ccontext);
π DESCRIPTION π
This function compiles a regular expression pattern into an internal form. Its arguments are:
patternβ a string containing expression to be compiledlengthβ the length of the string orPCRE2_ZERO_TERMINATEDoptionsβ primary option bitserrorcodeβ where to put an error codeerroffsetβ where to put an error offsetccontextβ pointer to a compile context orNULL
The length of the pattern and any error offset that is returned are in code units, not characters. A NULL pattern with zero length is treated as an empty string. A compile context is needed only if you want to provide custom memory allocation functions, or to provide an external function for system stack size checking (see pcre2_set_compile_recursion_guard()), or to change one or more of these parameters:
- What
\Rmatches (Unicode newlines, or CR, LF, CRLF only); - PCRE2's character tables;
- The newline character sequence;
- The compile time nested parentheses limit;
- The maximum pattern length (in code units) that is allowed;
- The additional options bits.
The primary option bits are:
PCRE2_ANCHOREDβ force pattern anchoringPCRE2_ALLOW_EMPTY_CLASSβ allow empty classesPCRE2_ALT_BSUXβ alternative handling of\u,\U, and\xPCRE2_ALT_CIRCUMFLEXβ alternative handling of^in multiline modePCRE2_ALT_EXTENDED_CLASSβ alternative extended character class syntaxPCRE2_ALT_VERBNAMESβ process backslashes in verb namesPCRE2_AUTO_CALLOUTβ compile automatic calloutsPCRE2_CASELESSβ do caseless matchingPCRE2_DOLLAR_ENDONLYβ$not to match newline at endPCRE2_DOTALLβ.matches anything including NLPCRE2_DUPNAMESβ allow duplicate names for subpatternsPCRE2_ENDANCHOREDβ pattern can match only at end of subjectPCRE2_EXTENDEDβ ignore white space and#commentsPCRE2_FIRSTLINEβ force matching to be before newlinePCRE2_LITERALβ pattern characters are all literalPCRE2_MATCH_INVALID_UTFβ enable support for matching invalid UTFPCRE2_MATCH_UNSET_BACKREFβ match unset backreferencesPCRE2_MULTILINEβ^and$match newlines within dataPCRE2_NEVER_BACKSLASH_Cβ lock out the use of\Cin patternsPCRE2_NEVER_UCPβ lock outPCRE2_UCP, e.g. via(*UCP)PCRE2_NEVER_UTFβ lock outPCRE2_UTF, e.g. via(*UTF)PCRE2_NO_AUTO_CAPTUREβ disable numbered capturing parentheses (named ones available)PCRE2_NO_AUTO_POSSESSβ disable auto-possessificationPCRE2_NO_DOTSTAR_ANCHORβ disable automatic anchoring for.*PCRE2_NO_START_OPTIMIZEβ disable match-time start optimizationsPCRE2_NO_UTF_CHECKβ do not check the pattern for UTF validity (only relevant ifPCRE2_UTFis set)PCRE2_UCPβ use Unicode properties for\d,\w, etc.PCRE2_UNGREEDYβ invert greediness of quantifiersPCRE2_USE_OFFSET_LIMITβ enable offset limit for unanchored matchingPCRE2_UTFβ treat pattern and subjects as UTF strings
PCRE2 must be built with Unicode support (the default) in order to use PCRE2_UTF, PCRE2_UCP and related options.
Additional options may be set in the compile context via the pcre2_set_compile_extra_options function.
If either of errorcode or erroroffset is NULL, the function returns NULL immediately. Otherwise, the yield of this function is a pointer to a private data structure that contains the compiled pattern, or NULL if an error was detected. In the error case, a text error message can be obtained by passing the value returned via the errorcode argument to the pcre2_get_error_message() function. The offset (in code units) where the error was encountered is returned via the erroroffset argument.
If there is no error, the value passed via errorcode returns the message "no error" if passed to pcre2_get_error_message(), and the value passed via erroroffset is zero.
There is a complete description of the PCRE2 native API, with more detail on each option, in the pcre2api page, and a description of the POSIX API in the pcre2posix page.
π signed with love and exact bytes: PCRE2 10.47, 30 October 2024 β bye bestie, go compile something iconic π
β¨
π¦ where this page comes from
- fedora 43: pcre2-devel 10.47-1.fc43 Β· BSD-3-Clause AND FSFULLR AND X11 AND GPL-2.0-or-later AND FSFAP AND FSFUL AND GPL-3.0-or-later
- fedora 43: pcre2-devel 10.47-1.fc43 Β· BSD-3-Clause AND FSFULLR AND X11 AND GPL-2.0-or-later AND FSFAP AND FSFUL AND GPL-3.0-or-later
- fedora 44: pcre2-devel 10.47-1.fc44.1 Β· BSD-3-Clause AND FSFULLR AND X11 AND GPL-2.0-or-later AND FSFAP AND FSFUL AND GPL-3.0-or-later
- fedora 44: pcre2-devel 10.47-1.fc44.1 Β· BSD-3-Clause AND FSFULLR AND X11 AND GPL-2.0-or-later AND FSFAP AND FSFUL AND GPL-3.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms