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

132 lines
9.1 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML><HEAD><TITLE>Man page of PCRE_EXEC</TITLE>
</HEAD><BODY>
<H1>PCRE_EXEC</H1>
Section: C Library Functions (3)<BR>Updated: 12 May 2013<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>
PCRE - Perl-compatible regular expressions
<A NAME="lbAC">&nbsp;</A>
<H2>SYNOPSIS</H2>
<P>
<B>#include &lt;<A HREF="file:///usr/include/pcre.h">pcre.h</A>&gt;</B>
<P>
<PRE>
<B>int pcre_exec(const pcre *</B><I>code</I>, const pcre_extra *<I>extra</I>,
<B> const char *</B><I>subject</I>, int <I>length</I>, int <I>startoffset</I>,
<B> int </B><I>options</I>, int *<I>ovector</I>, int <I>ovecsize</I>);
<B>int pcre16_exec(const pcre16 *</B><I>code</I>, const pcre16_extra *<I>extra</I>,
<B> PCRE_SPTR16 </B><I>subject</I>, int <I>length</I>, int <I>startoffset</I>,
<B> int </B><I>options</I>, int *<I>ovector</I>, int <I>ovecsize</I>);
<B>int pcre32_exec(const pcre32 *</B><I>code</I>, const pcre32_extra *<I>extra</I>,
<B> PCRE_SPTR32 </B><I>subject</I>, int <I>length</I>, int <I>startoffset</I>,
<B> int </B><I>options</I>, int *<I>ovector</I>, int <I>ovecsize</I>);
</PRE>
<A NAME="lbAD">&nbsp;</A>
<H2>DESCRIPTION</H2>
<P>
This function matches a compiled regular expression against a given subject
string, using a matching algorithm that is similar to Perl's. It returns
offsets to captured substrings. Its arguments are:
<P>
<BR>&nbsp;&nbsp;<I>code</I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Points&nbsp;to&nbsp;the&nbsp;compiled&nbsp;pattern
<BR>&nbsp;&nbsp;<I>extra</I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Points&nbsp;to&nbsp;an&nbsp;associated&nbsp;<B>pcre[16|32]_extra</B>&nbsp;structure,
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or&nbsp;is&nbsp;NULL
<BR>&nbsp;&nbsp;<I>subject</I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Points&nbsp;to&nbsp;the&nbsp;subject&nbsp;string
<BR>&nbsp;&nbsp;<I>length</I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Length&nbsp;of&nbsp;the&nbsp;subject&nbsp;string
<BR>&nbsp;&nbsp;<I>startoffset</I>&nbsp;&nbsp;Offset&nbsp;in&nbsp;the&nbsp;subject&nbsp;at&nbsp;which&nbsp;to&nbsp;start&nbsp;matching
<BR>&nbsp;&nbsp;<I>options</I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Option&nbsp;bits
<BR>&nbsp;&nbsp;<I>ovector</I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Points&nbsp;to&nbsp;a&nbsp;vector&nbsp;of&nbsp;ints&nbsp;for&nbsp;result&nbsp;offsets
<BR>&nbsp;&nbsp;<I>ovecsize</I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Number&nbsp;of&nbsp;elements&nbsp;in&nbsp;the&nbsp;vector&nbsp;(a&nbsp;multiple&nbsp;of&nbsp;3)
<P>
The units for <I>length</I> and <I>startoffset</I> are bytes for
<B>pcre_exec()</B>, 16-bit data items for <B>pcre16_exec()</B>, and 32-bit items
for <B>pcre32_exec()</B>. The options are:
<P>
<BR>&nbsp;&nbsp;PCRE_ANCHORED&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Match&nbsp;only&nbsp;at&nbsp;the&nbsp;first&nbsp;position
<BR>&nbsp;&nbsp;PCRE_BSR_ANYCRLF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\R&nbsp;matches&nbsp;only&nbsp;CR,&nbsp;LF,&nbsp;or&nbsp;CRLF
<BR>&nbsp;&nbsp;PCRE_BSR_UNICODE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\R&nbsp;matches&nbsp;all&nbsp;Unicode&nbsp;line&nbsp;endings
<BR>&nbsp;&nbsp;PCRE_NEWLINE_ANY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Recognize&nbsp;any&nbsp;Unicode&nbsp;newline&nbsp;sequence
<BR>&nbsp;&nbsp;PCRE_NEWLINE_ANYCRLF&nbsp;&nbsp;&nbsp;Recognize&nbsp;CR,&nbsp;LF,&nbsp;&amp;&nbsp;CRLF&nbsp;as&nbsp;newline&nbsp;sequences
<BR>&nbsp;&nbsp;PCRE_NEWLINE_CR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Recognize&nbsp;CR&nbsp;as&nbsp;the&nbsp;only&nbsp;newline&nbsp;sequence
<BR>&nbsp;&nbsp;PCRE_NEWLINE_CRLF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Recognize&nbsp;CRLF&nbsp;as&nbsp;the&nbsp;only&nbsp;newline&nbsp;sequence
<BR>&nbsp;&nbsp;PCRE_NEWLINE_LF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Recognize&nbsp;LF&nbsp;as&nbsp;the&nbsp;only&nbsp;newline&nbsp;sequence
<BR>&nbsp;&nbsp;PCRE_NOTBOL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Subject&nbsp;string&nbsp;is&nbsp;not&nbsp;the&nbsp;beginning&nbsp;of&nbsp;a&nbsp;line
<BR>&nbsp;&nbsp;PCRE_NOTEOL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Subject&nbsp;string&nbsp;is&nbsp;not&nbsp;the&nbsp;end&nbsp;of&nbsp;a&nbsp;line
<BR>&nbsp;&nbsp;PCRE_NOTEMPTY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;An&nbsp;empty&nbsp;string&nbsp;is&nbsp;not&nbsp;a&nbsp;valid&nbsp;match
<BR>&nbsp;&nbsp;PCRE_NOTEMPTY_ATSTART&nbsp;&nbsp;An&nbsp;empty&nbsp;string&nbsp;at&nbsp;the&nbsp;start&nbsp;of&nbsp;the&nbsp;subject
<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;is&nbsp;not&nbsp;a&nbsp;valid&nbsp;match
<BR>&nbsp;&nbsp;PCRE_NO_START_OPTIMIZE&nbsp;Do&nbsp;not&nbsp;do&nbsp;&quot;start-match&quot;&nbsp;optimizations
<BR>&nbsp;&nbsp;PCRE_NO_UTF16_CHECK&nbsp;&nbsp;&nbsp;&nbsp;Do&nbsp;not&nbsp;check&nbsp;the&nbsp;subject&nbsp;for&nbsp;UTF-16
<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;validity&nbsp;(only&nbsp;relevant&nbsp;if&nbsp;PCRE_UTF16
<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;was&nbsp;set&nbsp;at&nbsp;compile&nbsp;time)
<BR>&nbsp;&nbsp;PCRE_NO_UTF32_CHECK&nbsp;&nbsp;&nbsp;&nbsp;Do&nbsp;not&nbsp;check&nbsp;the&nbsp;subject&nbsp;for&nbsp;UTF-32
<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;validity&nbsp;(only&nbsp;relevant&nbsp;if&nbsp;PCRE_UTF32
<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;was&nbsp;set&nbsp;at&nbsp;compile&nbsp;time)
<BR>&nbsp;&nbsp;PCRE_NO_UTF8_CHECK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Do&nbsp;not&nbsp;check&nbsp;the&nbsp;subject&nbsp;for&nbsp;UTF-8
<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;validity&nbsp;(only&nbsp;relevant&nbsp;if&nbsp;PCRE_UTF8
<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;was&nbsp;set&nbsp;at&nbsp;compile&nbsp;time)
<BR>&nbsp;&nbsp;PCRE_PARTIAL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;Return&nbsp;PCRE_ERROR_PARTIAL&nbsp;for&nbsp;a&nbsp;partial
<BR>&nbsp;&nbsp;PCRE_PARTIAL_SOFT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;&nbsp;&nbsp;match&nbsp;if&nbsp;no&nbsp;full&nbsp;matches&nbsp;are&nbsp;found
<BR>&nbsp;&nbsp;PCRE_PARTIAL_HARD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return&nbsp;PCRE_ERROR_PARTIAL&nbsp;for&nbsp;a&nbsp;partial&nbsp;match
<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;if&nbsp;that&nbsp;is&nbsp;found&nbsp;before&nbsp;a&nbsp;full&nbsp;match
<P>
For details of partial matching, see the
<B>pcrepartial</B>
page. A <B>pcre_extra</B> structure contains the following fields:
<P>
<BR>&nbsp;&nbsp;<I>flags</I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bits&nbsp;indicating&nbsp;which&nbsp;fields&nbsp;are&nbsp;set
<BR>&nbsp;&nbsp;<I>study_data</I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Opaque&nbsp;data&nbsp;from&nbsp;<B>pcre[16|32]_study()</B>
<BR>&nbsp;&nbsp;<I>match_limit</I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Limit&nbsp;on&nbsp;internal&nbsp;resource&nbsp;use
<BR>&nbsp;&nbsp;<I>match_limit_recursion</I>&nbsp;&nbsp;Limit&nbsp;on&nbsp;internal&nbsp;recursion&nbsp;depth
<BR>&nbsp;&nbsp;<I>callout_data</I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Opaque&nbsp;data&nbsp;passed&nbsp;back&nbsp;to&nbsp;callouts
<BR>&nbsp;&nbsp;<I>tables</I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Points&nbsp;to&nbsp;character&nbsp;tables&nbsp;or&nbsp;is&nbsp;NULL
<BR>&nbsp;&nbsp;<I>mark</I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For&nbsp;passing&nbsp;back&nbsp;a&nbsp;*MARK&nbsp;pointer
<BR>&nbsp;&nbsp;<I>executable_jit</I>&nbsp;&nbsp;&nbsp;Opaque&nbsp;data&nbsp;from&nbsp;JIT&nbsp;compilation
<P>
The flag bits are PCRE_EXTRA_STUDY_DATA, PCRE_EXTRA_MATCH_LIMIT,
PCRE_EXTRA_MATCH_LIMIT_RECURSION, PCRE_EXTRA_CALLOUT_DATA,
PCRE_EXTRA_TABLES, PCRE_EXTRA_MARK and PCRE_EXTRA_EXECUTABLE_JIT.
<P>
There is a complete description of the PCRE native API in the
<B>pcreapi</B>
page and a description of the POSIX API in the
<B>pcreposix</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:51 GMT, March 31, 2021
</BODY>
</HTML>