PCRE2 — Perl-compatible regular expressions (revised API)
#include <pcre2.h> int pcre2_substitute(const pcre2_code *code
, PCRE2_SPTRsubject
, PCRE2_SIZElength
, PCRE2_SIZEstartoffset
, uint32_toptions
, pcre2_match_data *match_data
, pcre2_match_context *mcontext
, PCRE2_SPTRreplacement
, PCRE2_SIZErlength
, PCRE2_UCHAR *outputbuffer
, PCRE2_SIZE *outlengthptr
);
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:
code
Points to the compiled patternsubject
Points to the subject stringlength
Length of the subject stringstartoffset
Offset in the subject at which to start matchingoptions
Option bitsmatch_data
Points to a match data block, or is NULLmcontext
Points to a match context, or is NULLreplacement
Points to the replacement stringrlength
Length of the replacement stringoutputbuffer
Points to the output bufferoutlengthptr
Points to the length of the output buffer
A match data block is needed only if you want to inspect the data from the match that is returned in that block. A match context is needed only if you want to:
Set up a callout function Set a matching offset limit Change the backtracking match limit Change the backtracking depth limit Set custom memory management in the match context
The length
, startoffset
and rlength
values are code units, not
characters, as is the contents of the variable pointed at by
outlengthptr
, which is updated
to the actual length of the new string. The subject and
replacement lengths can be given as PCRE2_ZERO_TERMINATED for
zero-terminated strings. The options are:
PCRE2_ANCHORED Match only at the first position PCRE2_ENDANCHORED Pattern can match only at end of subject 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 PCRE2_NOTEMPTY_ATSTART An empty string at the start of the subject is not a valid match PCRE2_NO_JIT Do not use JIT matching 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 PCRE2_SUBSTITUTE_OVERFLOW_LENGTH If overflow, compute needed length PCRE2_SUBSTITUTE_UNKNOWN_UNSET Treat unknown group as unset PCRE2_SUBSTITUTE_UNSET_EMPTY Simple unset insert = empty string
The function returns the number of substitutions, which may be zero if there were no matches. The result can be greater than one only when PCRE2_SUBSTITUTE_GLOBAL is set. In the event of an error, a negative error code is returned.
There is a complete description of the PCRE2 native API in the pcre2api(3) page and a description of the POSIX API in the pcre2posix(3) page.
COPYRIGHT |
---|
This manual page is taken from the PCRE library, which is distributed under the BSD license. |