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

116 lines
6.4 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML><HEAD><TITLE>Man page of PCRE2_MATCH</TITLE>
</HEAD><BODY>
<H1>PCRE2_MATCH</H1>
Section: C Library Functions (3)<BR>Updated: 16 October 2018<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>int pcre2_match(const pcre2_code *</B><I>code</I>, PCRE2_SPTR <I>subject</I>,
<B> PCRE2_SIZE </B><I>length</I>, PCRE2_SIZE <I>startoffset</I>,
<B> uint32_t </B><I>options</I>, pcre2_match_data *<I>match_data</I>,
<B> pcre2_match_context *</B><I>mcontext</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 what it has matched and to captured substrings via the
<B>match_data</B> block, which can be processed by functions with names that
start with <B>pcre2_get_ovector_...()</B> or <B>pcre2_substring_...()</B>. The
return from <B>pcre2_match()</B> is one more than the highest numbered capturing
pair that has been set (for example, 1 if there are no captures), zero if the
vector of offsets is too small, or a negative error code for no match and other
errors. The function 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>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>match_data</I>&nbsp;&nbsp;&nbsp;Points&nbsp;to&nbsp;a&nbsp;match&nbsp;data&nbsp;block,&nbsp;for&nbsp;results
<BR>&nbsp;&nbsp;<I>mcontext</I>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Points&nbsp;to&nbsp;a&nbsp;match&nbsp;context,&nbsp;or&nbsp;is&nbsp;NULL
<P>
A match context is needed only if you want to:
<P>
<BR>&nbsp;&nbsp;Set&nbsp;up&nbsp;a&nbsp;callout&nbsp;function
<BR>&nbsp;&nbsp;Set&nbsp;a&nbsp;matching&nbsp;offset&nbsp;limit
<BR>&nbsp;&nbsp;Change&nbsp;the&nbsp;heap&nbsp;memory&nbsp;limit
<BR>&nbsp;&nbsp;Change&nbsp;the&nbsp;backtracking&nbsp;match&nbsp;limit
<BR>&nbsp;&nbsp;Change&nbsp;the&nbsp;backtracking&nbsp;depth&nbsp;limit
<BR>&nbsp;&nbsp;Set&nbsp;custom&nbsp;memory&nbsp;management&nbsp;specifically&nbsp;for&nbsp;the&nbsp;match
<P>
The <I>length</I> and <I>startoffset</I> values are code units, not characters.
The length may be given as PCRE2_ZERO_TERMINATED for a subject that is
terminated by a binary zero code unit. The options are:
<P>
<BR>&nbsp;&nbsp;PCRE2_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;PCRE2_COPY_MATCHED_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;On&nbsp;success,&nbsp;make&nbsp;a&nbsp;private&nbsp;subject&nbsp;copy
<BR>&nbsp;&nbsp;PCRE2_ENDANCHORED&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_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;PCRE2_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;PCRE2_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;PCRE2_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;PCRE2_NO_JIT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Do&nbsp;not&nbsp;use&nbsp;JIT&nbsp;matching
<BR>&nbsp;&nbsp;PCRE2_NO_UTF_CHECK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Do&nbsp;not&nbsp;check&nbsp;the&nbsp;subject&nbsp;for&nbsp;UTF
<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;PCRE2_UTF
<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;PCRE2_PARTIAL_HARD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return&nbsp;PCRE2_ERROR_PARTIAL&nbsp;for&nbsp;a&nbsp;partial
<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;match&nbsp;even&nbsp;if&nbsp;there&nbsp;is&nbsp;a&nbsp;full&nbsp;match
<BR>&nbsp;&nbsp;PCRE2_PARTIAL_SOFT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return&nbsp;PCRE2_ERROR_PARTIAL&nbsp;for&nbsp;a&nbsp;partial
<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;match&nbsp;if&nbsp;no&nbsp;full&nbsp;matches&nbsp;are&nbsp;found
<P>
For details of partial matching, see the
<B>pcre2partial</B>
page. There is a complete description of the PCRE2 native API 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:50 GMT, March 31, 2021
</BODY>
</HTML>