2020-01-22 18:50:12 +01:00
|
|
|
.TH PCRE2_SUBSTITUTE 3 "22 January 2020" "PCRE2 10.35"
|
2014-11-11 17:51:07 +01:00
|
|
|
.SH NAME
|
|
|
|
PCRE2 - Perl-compatible regular expressions (revised API)
|
|
|
|
.SH SYNOPSIS
|
|
|
|
.rs
|
|
|
|
.sp
|
|
|
|
.B #include <pcre2.h>
|
|
|
|
.PP
|
|
|
|
.nf
|
|
|
|
.B int pcre2_substitute(const pcre2_code *\fIcode\fP, PCRE2_SPTR \fIsubject\fP,
|
|
|
|
.B " PCRE2_SIZE \fIlength\fP, PCRE2_SIZE \fIstartoffset\fP,"
|
|
|
|
.B " uint32_t \fIoptions\fP, pcre2_match_data *\fImatch_data\fP,"
|
2014-11-28 13:46:16 +01:00
|
|
|
.B " pcre2_match_context *\fImcontext\fP, PCRE2_SPTR \fIreplacement\fP,"
|
2014-11-11 17:51:07 +01:00
|
|
|
.B " PCRE2_SIZE \fIrlength\fP, PCRE2_UCHAR *\fIoutputbuffer\fP,"
|
|
|
|
.B " PCRE2_SIZE *\fIoutlengthptr\fP);"
|
|
|
|
.fi
|
|
|
|
.
|
|
|
|
.SH DESCRIPTION
|
|
|
|
.rs
|
|
|
|
.sp
|
|
|
|
This function matches a compiled regular expression against a given subject
|
|
|
|
string, using a matching algorithm that is similar to Perl's. It then makes a
|
|
|
|
copy of the subject, substituting a replacement string for what was matched.
|
|
|
|
Its arguments are:
|
|
|
|
.sp
|
|
|
|
\fIcode\fP Points to the compiled pattern
|
|
|
|
\fIsubject\fP Points to the subject string
|
|
|
|
\fIlength\fP Length of the subject string
|
|
|
|
\fIstartoffset\fP Offset in the subject at which to start matching
|
|
|
|
\fIoptions\fP Option bits
|
|
|
|
\fImatch_data\fP Points to a match data block, or is NULL
|
|
|
|
\fImcontext\fP Points to a match context, or is NULL
|
|
|
|
\fIreplacement\fP Points to the replacement string
|
|
|
|
\fIrlength\fP Length of the replacement string
|
|
|
|
\fIoutputbuffer\fP Points to the output buffer
|
|
|
|
\fIoutlengthptr\fP Points to the length of the output buffer
|
|
|
|
.sp
|
2017-03-26 17:44:09 +02:00
|
|
|
A match data block is needed only if you want to inspect the data from the
|
2020-01-05 13:32:29 +01:00
|
|
|
final match that is returned in that block or if PCRE2_SUBSTITUTE_MATCHED is
|
|
|
|
set. A match context is needed only if you want to:
|
2014-11-11 17:51:07 +01:00
|
|
|
.sp
|
|
|
|
Set up a callout function
|
2017-03-26 17:44:09 +02:00
|
|
|
Set a matching offset limit
|
|
|
|
Change the backtracking match limit
|
|
|
|
Change the backtracking depth limit
|
|
|
|
Set custom memory management in the match context
|
2014-11-11 17:51:07 +01:00
|
|
|
.sp
|
2020-01-05 13:32:29 +01:00
|
|
|
The \fIlength\fP, \fIstartoffset\fP and \fIrlength\fP values are code units,
|
|
|
|
not characters, as is the contents of the variable pointed at by
|
|
|
|
\fIoutlengthptr\fP. This variable must contain the length of the output buffer
|
|
|
|
when the function is called. If the function is successful, the value is
|
|
|
|
changed to the length of the new string, excluding the trailing zero that is
|
|
|
|
automatically added.
|
|
|
|
.P
|
2017-07-19 18:04:15 +02:00
|
|
|
The subject and replacement lengths can be given as PCRE2_ZERO_TERMINATED for
|
2017-03-26 17:44:09 +02:00
|
|
|
zero-terminated strings. The options are:
|
2014-11-11 17:51:07 +01:00
|
|
|
.sp
|
2015-10-07 19:32:48 +02:00
|
|
|
PCRE2_ANCHORED Match only at the first position
|
2017-04-04 19:09:33 +02:00
|
|
|
PCRE2_ENDANCHORED Pattern can match only at end of subject
|
2015-10-07 19:32:48 +02:00
|
|
|
PCRE2_NOTBOL Subject is not the beginning of a line
|
|
|
|
PCRE2_NOTEOL Subject is not the end of a line
|
|
|
|
PCRE2_NOTEMPTY An empty string is not a valid match
|
2017-03-26 17:44:09 +02:00
|
|
|
.\" JOIN
|
2015-10-07 19:32:48 +02:00
|
|
|
PCRE2_NOTEMPTY_ATSTART An empty string at the start of the
|
|
|
|
subject is not a valid match
|
2017-03-26 17:44:09 +02:00
|
|
|
PCRE2_NO_JIT Do not use JIT matching
|
|
|
|
.\" JOIN
|
2015-10-07 19:32:48 +02:00
|
|
|
PCRE2_NO_UTF_CHECK Do not check the subject or replacement
|
|
|
|
for UTF validity (only relevant if
|
|
|
|
PCRE2_UTF was set at compile time)
|
|
|
|
PCRE2_SUBSTITUTE_EXTENDED Do extended replacement processing
|
|
|
|
PCRE2_SUBSTITUTE_GLOBAL Replace all occurrences in the subject
|
2020-01-05 13:32:29 +01:00
|
|
|
PCRE2_SUBSTITUTE_LITERAL The replacement string is literal
|
|
|
|
PCRE2_SUBSTITUTE_MATCHED Use pre-existing match data for 1st match
|
2015-12-17 19:44:06 +01:00
|
|
|
PCRE2_SUBSTITUTE_OVERFLOW_LENGTH If overflow, compute needed length
|
2020-01-22 18:50:12 +01:00
|
|
|
PCRE2_SUBSTITUTE_REPLACEMENT_ONLY Return only replacement string(s)
|
2015-12-17 19:44:06 +01:00
|
|
|
PCRE2_SUBSTITUTE_UNKNOWN_UNSET Treat unknown group as unset
|
|
|
|
PCRE2_SUBSTITUTE_UNSET_EMPTY Simple unset insert = empty string
|
2014-11-11 17:51:07 +01:00
|
|
|
.sp
|
2020-01-05 13:32:29 +01:00
|
|
|
If PCRE2_SUBSTITUTE_LITERAL is set, PCRE2_SUBSTITUTE_EXTENDED,
|
2019-12-27 14:35:17 +01:00
|
|
|
PCRE2_SUBSTITUTE_UNKNOWN_UNSET, and PCRE2_SUBSTITUTE_UNSET_EMPTY are ignored.
|
2019-12-26 15:53:24 +01:00
|
|
|
.P
|
2020-01-05 13:32:29 +01:00
|
|
|
If PCRE2_SUBSTITUTE_MATCHED is set, \fImatch_data\fP must be non-zero; its
|
|
|
|
contents must be the result of a call to \fBpcre2_match()\fP using the same
|
|
|
|
pattern and subject.
|
|
|
|
.P
|
2014-11-11 17:51:07 +01:00
|
|
|
The function returns the number of substitutions, which may be zero if there
|
2019-12-27 14:35:17 +01:00
|
|
|
are no matches. The result may be greater than one only when
|
2015-10-07 19:32:48 +02:00
|
|
|
PCRE2_SUBSTITUTE_GLOBAL is set. In the event of an error, a negative error code
|
|
|
|
is returned.
|
2014-11-11 17:51:07 +01:00
|
|
|
.P
|
|
|
|
There is a complete description of the PCRE2 native API in the
|
|
|
|
.\" HREF
|
|
|
|
\fBpcre2api\fP
|
|
|
|
.\"
|
|
|
|
page and a description of the POSIX API in the
|
|
|
|
.\" HREF
|
|
|
|
\fBpcre2posix\fP
|
|
|
|
.\"
|
|
|
|
page.
|