man-pages/man3/pcre2_compile.3.html
2021-03-31 01:06:50 +01:00

130 lines
7.7 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML><HEAD><TITLE>Man page of PCRE2_COMPILE</TITLE>
</HEAD><BODY>
<H1>PCRE2_COMPILE</H1>
Section: C Library Functions (3)<BR>Updated: 23 May 2019<BR><A HREF="#index">Index</A>
<A HREF="/cgi-bin/man/man2html">Return to Main Contents</A><HR>
<A NAME="lbAB">&nbsp;</A>
<H2>NAME</H2>
PCRE2 - Perl-compatible regular expressions (revised API)
<A NAME="lbAC">&nbsp;</A>
<H2>SYNOPSIS</H2>
<P>
<B>#include &lt;<A HREF="file:///usr/include/pcre2.h">pcre2.h</A>&gt;</B>
<P>
<PRE>
<B>pcre2_code *pcre2_compile(PCRE2_SPTR </B><I>pattern</I>, PCRE2_SIZE <I>length</I>,
<B> uint32_t </B><I>options</I>, int *<I>errorcode</I>, PCRE2_SIZE *<I>erroroffset,</I>
<B> pcre2_compile_context *</B><I>ccontext</I>);
</PRE>
<A NAME="lbAD">&nbsp;</A>
<H2>DESCRIPTION</H2>
<P>
This function compiles a regular expression pattern into an internal form. Its
arguments are:
<P>
<BR>&nbsp;&nbsp;<I>pattern</I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A&nbsp;string&nbsp;containing&nbsp;expression&nbsp;to&nbsp;be&nbsp;compiled
<BR>&nbsp;&nbsp;<I>length</I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;length&nbsp;of&nbsp;the&nbsp;string&nbsp;or&nbsp;PCRE2_ZERO_TERMINATED
<BR>&nbsp;&nbsp;<I>options</I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Option&nbsp;bits
<BR>&nbsp;&nbsp;<I>errorcode</I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Where&nbsp;to&nbsp;put&nbsp;an&nbsp;error&nbsp;code
<BR>&nbsp;&nbsp;<I>erroffset</I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Where&nbsp;to&nbsp;put&nbsp;an&nbsp;error&nbsp;offset
<BR>&nbsp;&nbsp;<I>ccontext</I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Pointer&nbsp;to&nbsp;a&nbsp;compile&nbsp;context&nbsp;or&nbsp;NULL
<P>
The length of the pattern and any error offset that is returned are in code
units, not characters. 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, or to change one or more of these parameters:
<P>
<BR>&nbsp;&nbsp;What&nbsp;\R&nbsp;matches&nbsp;(Unicode&nbsp;newlines,&nbsp;or&nbsp;CR,&nbsp;LF,&nbsp;CRLF&nbsp;only);
<BR>&nbsp;&nbsp;PCRE2's&nbsp;character&nbsp;tables;
<BR>&nbsp;&nbsp;The&nbsp;newline&nbsp;character&nbsp;sequence;
<BR>&nbsp;&nbsp;The&nbsp;compile&nbsp;time&nbsp;nested&nbsp;parentheses&nbsp;limit;
<BR>&nbsp;&nbsp;The&nbsp;maximum&nbsp;pattern&nbsp;length&nbsp;(in&nbsp;code&nbsp;units)&nbsp;that&nbsp;is&nbsp;allowed.
<BR>&nbsp;&nbsp;The&nbsp;additional&nbsp;options&nbsp;bits&nbsp;(see&nbsp;pcre2_set_compile_extra_options())
<P>
The option bits are:
<P>
<BR>&nbsp;&nbsp;PCRE2_ANCHORED&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Force&nbsp;pattern&nbsp;anchoring
<BR>&nbsp;&nbsp;PCRE2_ALLOW_EMPTY_CLASS&nbsp;&nbsp;Allow&nbsp;empty&nbsp;classes
<BR>&nbsp;&nbsp;PCRE2_ALT_BSUX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Alternative&nbsp;handling&nbsp;of&nbsp;\u,&nbsp;\U,&nbsp;and&nbsp;\x
<BR>&nbsp;&nbsp;PCRE2_ALT_CIRCUMFLEX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Alternative&nbsp;handling&nbsp;of&nbsp;^&nbsp;in&nbsp;multiline&nbsp;mode
<BR>&nbsp;&nbsp;PCRE2_ALT_VERBNAMES&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Process&nbsp;backslashes&nbsp;in&nbsp;verb&nbsp;names
<BR>&nbsp;&nbsp;PCRE2_AUTO_CALLOUT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compile&nbsp;automatic&nbsp;callouts
<BR>&nbsp;&nbsp;PCRE2_CASELESS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Do&nbsp;caseless&nbsp;matching
<BR>&nbsp;&nbsp;PCRE2_DOLLAR_ENDONLY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$&nbsp;not&nbsp;to&nbsp;match&nbsp;newline&nbsp;at&nbsp;end
<BR>&nbsp;&nbsp;PCRE2_DOTALL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.&nbsp;matches&nbsp;anything&nbsp;including&nbsp;NL
<BR>&nbsp;&nbsp;PCRE2_DUPNAMES&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Allow&nbsp;duplicate&nbsp;names&nbsp;for&nbsp;subpatterns
<BR>&nbsp;&nbsp;PCRE2_ENDANCHORED&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Pattern&nbsp;can&nbsp;match&nbsp;only&nbsp;at&nbsp;end&nbsp;of&nbsp;subject
<BR>&nbsp;&nbsp;PCRE2_EXTENDED&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ignore&nbsp;white&nbsp;space&nbsp;and&nbsp;#&nbsp;comments
<BR>&nbsp;&nbsp;PCRE2_FIRSTLINE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Force&nbsp;matching&nbsp;to&nbsp;be&nbsp;before&nbsp;newline
<BR>&nbsp;&nbsp;PCRE2_LITERAL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Pattern&nbsp;characters&nbsp;are&nbsp;all&nbsp;literal
<BR>&nbsp;&nbsp;PCRE2_MATCH_INVALID_UTF&nbsp;&nbsp;Enable&nbsp;support&nbsp;for&nbsp;matching&nbsp;invalid&nbsp;UTF
<BR>&nbsp;&nbsp;PCRE2_MATCH_UNSET_BACKREF&nbsp;&nbsp;Match&nbsp;unset&nbsp;backreferences
<BR>&nbsp;&nbsp;PCRE2_MULTILINE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^&nbsp;and&nbsp;$&nbsp;match&nbsp;newlines&nbsp;within&nbsp;data
<BR>&nbsp;&nbsp;PCRE2_NEVER_BACKSLASH_C&nbsp;&nbsp;Lock&nbsp;out&nbsp;the&nbsp;use&nbsp;of&nbsp;\C&nbsp;in&nbsp;patterns
<BR>&nbsp;&nbsp;PCRE2_NEVER_UCP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Lock&nbsp;out&nbsp;PCRE2_UCP,&nbsp;e.g.&nbsp;via&nbsp;(*UCP)
<BR>&nbsp;&nbsp;PCRE2_NEVER_UTF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Lock&nbsp;out&nbsp;PCRE2_UTF,&nbsp;e.g.&nbsp;via&nbsp;(*UTF)
<BR>&nbsp;&nbsp;PCRE2_NO_AUTO_CAPTURE&nbsp;&nbsp;&nbsp;&nbsp;Disable&nbsp;numbered&nbsp;capturing&nbsp;paren-
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;theses&nbsp;(named&nbsp;ones&nbsp;available)
<BR>&nbsp;&nbsp;PCRE2_NO_AUTO_POSSESS&nbsp;&nbsp;&nbsp;&nbsp;Disable&nbsp;auto-possessification
<BR>&nbsp;&nbsp;PCRE2_NO_DOTSTAR_ANCHOR&nbsp;&nbsp;Disable&nbsp;automatic&nbsp;anchoring&nbsp;for&nbsp;.*
<BR>&nbsp;&nbsp;PCRE2_NO_START_OPTIMIZE&nbsp;&nbsp;Disable&nbsp;match-time&nbsp;start&nbsp;optimizations
<BR>&nbsp;&nbsp;PCRE2_NO_UTF_CHECK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Do&nbsp;not&nbsp;check&nbsp;the&nbsp;pattern&nbsp;for&nbsp;UTF&nbsp;validity
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(only&nbsp;relevant&nbsp;if&nbsp;PCRE2_UTF&nbsp;is&nbsp;set)
<BR>&nbsp;&nbsp;PCRE2_UCP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Use&nbsp;Unicode&nbsp;properties&nbsp;for&nbsp;\d,&nbsp;\w,&nbsp;etc.
<BR>&nbsp;&nbsp;PCRE2_UNGREEDY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Invert&nbsp;greediness&nbsp;of&nbsp;quantifiers
<BR>&nbsp;&nbsp;PCRE2_USE_OFFSET_LIMIT&nbsp;&nbsp;&nbsp;Enable&nbsp;offset&nbsp;limit&nbsp;for&nbsp;unanchored&nbsp;matching
<BR>&nbsp;&nbsp;PCRE2_UTF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Treat&nbsp;pattern&nbsp;and&nbsp;subjects&nbsp;as&nbsp;UTF&nbsp;strings
<P>
PCRE2 must be built with Unicode support (the default) in order to use
PCRE2_UTF, PCRE2_UCP and related options.
<P>
Additional options may be set in the compile context via the
<B>pcre2_set_compile_extra_options</B>
function.
<P>
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.
<P>
There is a complete description of the PCRE2 native API, with more detail on
each option, in the
<B>pcre2api</B>
page, and a description of the POSIX API in the
<B>pcre2posix</B>
page.
<P>
<HR>
<A NAME="index">&nbsp;</A><H2>Index</H2>
<DL>
<DT id="1"><A HREF="#lbAB">NAME</A><DD>
<DT id="2"><A HREF="#lbAC">SYNOPSIS</A><DD>
<DT id="3"><A HREF="#lbAD">DESCRIPTION</A><DD>
</DL>
<HR>
This document was created by
<A HREF="/cgi-bin/man/man2html">man2html</A>,
using the manual pages.<BR>
Time: 00:05:49 GMT, March 31, 2021
</BODY>
</HTML>