PCRE\_EXEC(3) Library Functions Manual PCRE\_EXEC(3)

# [NAME](#NAME)

PCRE - Perl-compatible regular expressions

# [SYNOPSIS](#SYNOPSIS)

**#include &lt;pcre.h&gt;**

```
int pcre_jit_exec(const pcre *code, const pcre_extra *extra,
     const char *subject, int length, int startoffset,
     int options, int *ovector, int ovecsize,
     pcre_jit_stack *jstack);

int pcre16_jit_exec(const pcre16 *code, const pcre16_extra *extra,
     PCRE_SPTR16 subject, int length, int startoffset,
     int options, int *ovector, int ovecsize,
     pcre_jit_stack *jstack);

int pcre32_jit_exec(const pcre32 *code, const pcre32_extra *extra,
     PCRE_SPTR32 subject, int length, int startoffset,
     int options, int *ovector, int ovecsize,
     pcre_jit_stack *jstack);
```

# [DESCRIPTION](#DESCRIPTION)

This function matches a compiled regular expression that has been successfully studied with one of the JIT options against a given subject string, using a matching algorithm that is similar to Perl's. It is a "fast path" interface to JIT, and it bypasses some of the sanity checks that **pcre\_exec()** applies. It returns offsets to captured substrings. Its arguments are:

*code* Points to the compiled pattern  
*extra* Points to an associated **pcre\[16|32]\_extra** structure,  
or is NULL  
*subject* Points to the subject string  
*length* Length of the subject string, in bytes  
*startoffset* Offset in bytes in the subject at which to  
start matching  
*options* Option bits  
*ovector* Points to a vector of ints for result offsets  
*ovecsize* Number of elements in the vector (a multiple of 3)  
*jstack* Pointer to a JIT stack

The allowed options are:

PCRE\_NOTBOL Subject string is not the beginning of a line  
PCRE\_NOTEOL Subject string is not the end of a line  
PCRE\_NOTEMPTY An empty string is not a valid match  
PCRE\_NOTEMPTY\_ATSTART An empty string at the start of the subject  
is not a valid match  
PCRE\_NO\_UTF16\_CHECK Do not check the subject for UTF-16  
validity (only relevant if PCRE\_UTF16  
was set at compile time)  
PCRE\_NO\_UTF32\_CHECK Do not check the subject for UTF-32  
validity (only relevant if PCRE\_UTF32  
was set at compile time)  
PCRE\_NO\_UTF8\_CHECK Do not check the subject for UTF-8  
validity (only relevant if PCRE\_UTF8  
was set at compile time)  
PCRE\_PARTIAL ) Return PCRE\_ERROR\_PARTIAL for a partial  
PCRE\_PARTIAL\_SOFT ) match if no full matches are found  
PCRE\_PARTIAL\_HARD Return PCRE\_ERROR\_PARTIAL for a partial match  
if that is found before a full match

However, the PCRE\_NO\_UTF\[8|16|32]\_CHECK options have no effect, as this check is never applied. For details of partial matching, see the **pcrepartial** page. A **pcre\_extra** structure contains the following fields:

*flags* Bits indicating which fields are set  
*study\_data* Opaque data from **pcre\[16|32]\_study()**  
*match\_limit* Limit on internal resource use  
*match\_limit\_recursion* Limit on internal recursion depth  
*callout\_data* Opaque data passed back to callouts  
*tables* Points to character tables or is NULL  
*mark* For passing back a \*MARK pointer  
*executable\_jit* Opaque data from JIT compilation

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.

There is a complete description of the PCRE native API in the **pcreapi** page and a description of the JIT API in the **pcrejit** page.

31 October 2012 PCRE 8.30

---

Document: pcre_jit_exec(3) from pcre 8.45-r11 (Chainguard OS)
Source: https://downloads.sourceforge.net/project/pcre/pcre/8.45/pcre-8.45.tar.bz2
