111 |
.B int pcre_config(int \fIwhat\fP, void *\fIwhere\fP); |
.B int pcre_config(int \fIwhat\fP, void *\fIwhere\fP); |
112 |
.PP |
.PP |
113 |
.B char *pcre_version(void); |
.B char *pcre_version(void); |
114 |
.PP |
. |
115 |
|
. |
116 |
|
.SH "PCRE NATIVE API INDIRECTED FUNCTIONS" |
117 |
|
.rs |
118 |
|
.sp |
119 |
.B void *(*pcre_malloc)(size_t); |
.B void *(*pcre_malloc)(size_t); |
120 |
.PP |
.PP |
121 |
.B void (*pcre_free)(void *); |
.B void (*pcre_free)(void *); |
172 |
documentation describes how to compile and run it. |
documentation describes how to compile and run it. |
173 |
.P |
.P |
174 |
Just-in-time compiler support is an optional feature of PCRE that can be built |
Just-in-time compiler support is an optional feature of PCRE that can be built |
175 |
in appropriate hardware environments. It greatly speeds up the matching |
in appropriate hardware environments. It greatly speeds up the matching |
176 |
performance of many patterns. Simple programs can request its use if available. |
performance of many patterns. Simple programs can easily request that it be |
177 |
More complicated programs might need to make use of the |
used if available, by setting an option that is ignored when it is not |
178 |
\fBpcre_jit_stack_alloc()\fP, \fBpcre_jit_stack_free()\fP, and |
relevant. More complicated programs might need to make use of the functions |
179 |
\fBpcre_assign_jit_stack()\fP functions in order to control its memory usage. |
\fBpcre_jit_stack_alloc()\fP, \fBpcre_jit_stack_free()\fP, and |
180 |
|
\fBpcre_assign_jit_stack()\fP in order to control the JIT code's memory usage. |
181 |
These functions are discussed in the |
These functions are discussed in the |
182 |
.\" HREF |
.\" HREF |
183 |
\fBpcrejit\fP |
\fBpcrejit\fP |
1435 |
.P |
.P |
1436 |
Limiting the recursion depth limits the amount of machine stack that can be |
Limiting the recursion depth limits the amount of machine stack that can be |
1437 |
used, or, when PCRE has been compiled to use memory on the heap instead of the |
used, or, when PCRE has been compiled to use memory on the heap instead of the |
1438 |
stack, the amount of heap memory that can be used. This limit is relevant, and |
stack, the amount of heap memory that can be used. This limit is not relevant, |
1439 |
is ignored, when the pattern was successfully studied with |
and is ignored, if the pattern was successfully studied with |
1440 |
PCRE_STUDY_JIT_COMPILE. |
PCRE_STUDY_JIT_COMPILE. |
1441 |
.P |
.P |
1442 |
The default value for \fImatch_limit_recursion\fP can be set when PCRE is |
The default value for \fImatch_limit_recursion\fP can be set when PCRE is |
1496 |
PCRE_NOTBOL, PCRE_NOTEOL, PCRE_NOTEMPTY, PCRE_NOTEMPTY_ATSTART, |
PCRE_NOTBOL, PCRE_NOTEOL, PCRE_NOTEMPTY, PCRE_NOTEMPTY_ATSTART, |
1497 |
PCRE_NO_START_OPTIMIZE, PCRE_NO_UTF8_CHECK, PCRE_PARTIAL_SOFT, and |
PCRE_NO_START_OPTIMIZE, PCRE_NO_UTF8_CHECK, PCRE_PARTIAL_SOFT, and |
1498 |
PCRE_PARTIAL_HARD. |
PCRE_PARTIAL_HARD. |
1499 |
|
.P |
1500 |
|
If the pattern was successfully studied with the PCRE_STUDY_JIT_COMPILE option, |
1501 |
|
the only supported options for JIT execution are PCRE_NO_UTF8_CHECK, |
1502 |
|
PCRE_NOTBOL, PCRE_NOTEOL, PCRE_NOTEMPTY, and PCRE_NOTEMPTY_ATSTART. Note in |
1503 |
|
particular that partial matching is not supported. If an unsupported option is |
1504 |
|
used, JIT execution is disabled and the normal interpretive code in |
1505 |
|
\fBpcre_exec()\fP is run. |
1506 |
.sp |
.sp |
1507 |
PCRE_ANCHORED |
PCRE_ANCHORED |
1508 |
.sp |
.sp |
1809 |
.P |
.P |
1810 |
If the vector is too small to hold all the captured substring offsets, it is |
If the vector is too small to hold all the captured substring offsets, it is |
1811 |
used as far as possible (up to two-thirds of its length), and the function |
used as far as possible (up to two-thirds of its length), and the function |
1812 |
returns a value of zero. If the substring offsets are not of interest, |
returns a value of zero. If neither the actual string matched not any captured |
1813 |
\fBpcre_exec()\fP may be called with \fIovector\fP passed as NULL and |
substrings are of interest, \fBpcre_exec()\fP may be called with \fIovector\fP |
1814 |
\fIovecsize\fP as zero. However, if the pattern contains back references and |
passed as NULL and \fIovecsize\fP as zero. However, if the pattern contains |
1815 |
the \fIovector\fP is not big enough to remember the related substrings, PCRE |
back references and the \fIovector\fP is not big enough to remember the related |
1816 |
has to get additional memory for use during matching. Thus it is usually |
substrings, PCRE has to get additional memory for use during matching. Thus it |
1817 |
advisable to supply an \fIovector\fP. |
is usually advisable to supply an \fIovector\fP of reasonable size. |
1818 |
|
.P |
1819 |
|
There are some cases where zero is returned (indicating vector overflow) when |
1820 |
|
in fact the vector is exactly the right size for the final match. For example, |
1821 |
|
consider the pattern |
1822 |
|
.sp |
1823 |
|
(a)(?:(b)c|bd) |
1824 |
|
.sp |
1825 |
|
If a vector of 6 elements (allowing for only 1 captured substring) is given |
1826 |
|
with subject string "abd", \fBpcre_exec()\fP will try to set the second |
1827 |
|
captured string, thereby recording a vector overflow, before failing to match |
1828 |
|
"c" and backing up to try the second alternative. The zero return, however, |
1829 |
|
does correctly indicate that the maximum number of slots (namely 2) have been |
1830 |
|
filled. In similar cases where there is temporary overflow, but the final |
1831 |
|
number of used slots is actually less than the maximum, a non-zero value is |
1832 |
|
returned. |
1833 |
.P |
.P |
1834 |
The \fBpcre_fullinfo()\fP function can be used to find out how many capturing |
The \fBpcre_fullinfo()\fP function can be used to find out how many capturing |
1835 |
subpatterns there are in a compiled pattern. The smallest size for |
subpatterns there are in a compiled pattern. The smallest size for |
1850 |
number is 1, and the offsets for for the second and third capturing subpatterns |
number is 1, and the offsets for for the second and third capturing subpatterns |
1851 |
(assuming the vector is large enough, of course) are set to -1. |
(assuming the vector is large enough, of course) are set to -1. |
1852 |
.P |
.P |
1853 |
\fBNote\fP: Elements in the first two-thids of \fIovector\fP that do not |
\fBNote\fP: Elements in the first two-thirds of \fIovector\fP that do not |
1854 |
correspond to capturing parentheses in the pattern are never changed. That is, |
correspond to capturing parentheses in the pattern are never changed. That is, |
1855 |
if a pattern contains \fIn\fP capturing parentheses, no more than |
if a pattern contains \fIn\fP capturing parentheses, no more than |
1856 |
\fIovector[0]\fP to \fIovector[2n+1]\fP are set by \fBpcre_exec()\fP. The other |
\fIovector[0]\fP to \fIovector[2n+1]\fP are set by \fBpcre_exec()\fP. The other |
2010 |
PCRE_ERROR_JIT_STACKLIMIT (-27) |
PCRE_ERROR_JIT_STACKLIMIT (-27) |
2011 |
.sp |
.sp |
2012 |
This error is returned when a pattern that was successfully studied using the |
This error is returned when a pattern that was successfully studied using the |
2013 |
PCRE_STUDY_JIT_COMPILE option is matched, but the memory available for the |
PCRE_STUDY_JIT_COMPILE option is being matched, but the memory available for |
2014 |
just-in-time processing stack is not large enough. See the |
the just-in-time processing stack is not large enough. See the |
2015 |
.\" HREF |
.\" HREF |
2016 |
\fBpcrejit\fP |
\fBpcrejit\fP |
2017 |
.\" |
.\" |
2256 |
numbers. For this reason, the use of different names for subpatterns of the |
numbers. For this reason, the use of different names for subpatterns of the |
2257 |
same number causes an error at compile time. |
same number causes an error at compile time. |
2258 |
. |
. |
2259 |
|
. |
2260 |
.SH "DUPLICATE SUBPATTERN NAMES" |
.SH "DUPLICATE SUBPATTERN NAMES" |
2261 |
.rs |
.rs |
2262 |
.sp |
.sp |
2526 |
.rs |
.rs |
2527 |
.sp |
.sp |
2528 |
.nf |
.nf |
2529 |
Last updated: 29 August 2011 |
Last updated: 06 September 2011 |
2530 |
Copyright (c) 1997-2011 University of Cambridge. |
Copyright (c) 1997-2011 University of Cambridge. |
2531 |
.fi |
.fi |