blob: 66c44a35f6c8d37c613de6b51a7397cf2981ef5c [file] [edit]
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="Asciidoctor 2.0.26"><title>Perl-compatible Regular Expressions (PCRE2 API)</title><link rel="stylesheet" href="./css/document.css"><link rel="stylesheet" href="./css/standalone.css"><meta name="color-scheme" content="light dark"><meta name="theme-color" media="(prefers-color-scheme: light)" content="#0085cc"><meta name="theme-color" media="(prefers-color-scheme: dark)" content="#33b8ff"></head><body class="article offline-manual"><header class="offline-nav offline-hero"><nav><picture><source media="(prefers-color-scheme: dark)" srcset="./images/pcre2-header-dark.svg"><img src="./images/pcre2-header-light.svg" alt="PCRE2: Perl-Compatible Regular Expressions"></picture><a class="offline-home" href="https://www.pcre2.org/"><span aria-hidden="true">🌐︎</span> PCRE2 homepage</a></nav></header><main class="document-page"><header class="document-title"><h1>Perl-compatible Regular Expressions (PCRE2 API)</h1><p class="document-meta">PCRE2 10.50-DEV manual</p></header><div class="document-layout"><article class="prose" id="content"><p>The HTML documentation for PCRE2 consists of a number of pages that are listed
below in alphabetical order. If you are new to PCRE2, please read the first one
first.</p>
<div class="table-block fit-first"><table class="frame-all grid-all stretch stripes-even"><colgroup><col style="width: 40%;"><col style="width: 60%;"></colgroup><tbody><tr><td class="halign-left valign-top"><a href="./pcre2.html">pcre2</a></td><td class="halign-left valign-top">Introductory page</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2-config.html">pcre2-config</a></td><td class="halign-left valign-top">Information about the installation configuration</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2api.html">pcre2api</a></td><td class="halign-left valign-top">PCRE2’s native API</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2build.html">pcre2build</a></td><td class="halign-left valign-top">Building PCRE2</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2callout.html">pcre2callout</a></td><td class="halign-left valign-top">The callout facility</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2compat.html">pcre2compat</a></td><td class="halign-left valign-top">Compatibility with Perl</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2convert.html">pcre2convert</a></td><td class="halign-left valign-top">Experimental foreign pattern conversion functions</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2demo.html">pcre2demo</a></td><td class="halign-left valign-top">A demonstration C program that uses the PCRE2 library</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2grep.html">pcre2grep</a></td><td class="halign-left valign-top">The <code>pcre2grep</code> command</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2jit.html">pcre2jit</a></td><td class="halign-left valign-top">Discussion of the just-in-time optimization support</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2limits.html">pcre2limits</a></td><td class="halign-left valign-top">Details of size and other limits</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2matching.html">pcre2matching</a></td><td class="halign-left valign-top">Discussion of the two matching algorithms</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2partial.html">pcre2partial</a></td><td class="halign-left valign-top">Using PCRE2 for partial matching</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2pattern.html">pcre2pattern</a></td><td class="halign-left valign-top">Specification of the regular expressions supported by PCRE2</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2perform.html">pcre2perform</a></td><td class="halign-left valign-top">Some comments on performance</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2posix.html">pcre2posix</a></td><td class="halign-left valign-top">The POSIX API to the PCRE2 8-bit library</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2sample.html">pcre2sample</a></td><td class="halign-left valign-top">Discussion of the pcre2demo program</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2serialize.html">pcre2serialize</a></td><td class="halign-left valign-top">Serializing functions for saving precompiled patterns</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2syntax.html">pcre2syntax</a></td><td class="halign-left valign-top">Syntax quick-reference summary</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2test.html">pcre2test</a></td><td class="halign-left valign-top">The <code>pcre2test</code> command for testing PCRE2</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2unicode.html">pcre2unicode</a></td><td class="halign-left valign-top">Discussion of Unicode and UTF-8/UTF-16/UTF-32 support</td></tr></tbody></table></div>
<p>There are also individual pages that summarize the interface for each function
in the library.</p>
<div class="table-block fit-first"><table class="frame-all grid-all stretch stripes-even"><colgroup><col style="width: 40%;"><col style="width: 60%;"></colgroup><tbody><tr><td class="halign-left valign-top"><a href="./pcre2_callout_enumerate.html">pcre2_callout_enumerate</a></td><td class="halign-left valign-top">Enumerate callouts in a compiled pattern</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_code_copy.html">pcre2_code_copy</a></td><td class="halign-left valign-top">Copy a compiled pattern</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_code_copy_with_tables.html">pcre2_code_copy_with_tables</a></td><td class="halign-left valign-top">Copy a compiled pattern and its character tables</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_code_free.html">pcre2_code_free</a></td><td class="halign-left valign-top">Free a compiled pattern</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_compile.html">pcre2_compile</a></td><td class="halign-left valign-top">Compile a regular expression pattern</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_compile_context_copy.html">pcre2_compile_context_copy</a></td><td class="halign-left valign-top">Copy a compile context</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_compile_context_create.html">pcre2_compile_context_create</a></td><td class="halign-left valign-top">Create a compile context</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_compile_context_free.html">pcre2_compile_context_free</a></td><td class="halign-left valign-top">Free a compile context</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_config.html">pcre2_config</a></td><td class="halign-left valign-top">Show build-time related configuration options</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_convert_context_copy.html">pcre2_convert_context_copy</a></td><td class="halign-left valign-top">Copy a convert context</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_convert_context_create.html">pcre2_convert_context_create</a></td><td class="halign-left valign-top">Create a convert context</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_convert_context_free.html">pcre2_convert_context_free</a></td><td class="halign-left valign-top">Free a convert context</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_converted_pattern_free.html">pcre2_converted_pattern_free</a></td><td class="halign-left valign-top">Free converted foreign pattern</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_dfa_match.html">pcre2_dfa_match</a></td><td class="halign-left valign-top">Match a compiled pattern to a subject string using the alternative matching algorithm (DFA algorithm; not Perl compatible)</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_general_context_copy.html">pcre2_general_context_copy</a></td><td class="halign-left valign-top">Copy a general context</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_general_context_create.html">pcre2_general_context_create</a></td><td class="halign-left valign-top">Create a general context</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_general_context_free.html">pcre2_general_context_free</a></td><td class="halign-left valign-top">Free a general context</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_get_bsr.html">pcre2_get_bsr</a></td><td class="halign-left valign-top">Get the \R convention</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_get_depth_limit.html">pcre2_get_depth_limit</a></td><td class="halign-left valign-top">Get the match backtracking depth limit</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_get_error_message.html">pcre2_get_error_message</a></td><td class="halign-left valign-top">Get textual error message for error number</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_get_heap_limit.html">pcre2_get_heap_limit</a></td><td class="halign-left valign-top">Get the match backtracking heap limit</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_get_mark.html">pcre2_get_mark</a></td><td class="halign-left valign-top">Get a (*MARK) name</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_get_match_data_heapframes_size.html">pcre2_get_match_data_heapframes_size</a></td><td class="halign-left valign-top">Get the size of match data heapframes</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_get_match_data_size.html">pcre2_get_match_data_size</a></td><td class="halign-left valign-top">Get the size of a match data block</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_get_match_limit.html">pcre2_get_match_limit</a></td><td class="halign-left valign-top">Get the match limit</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_get_max_pattern_length.html">pcre2_get_max_pattern_length</a></td><td class="halign-left valign-top">Get the maximum length of a pattern</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_get_newline.html">pcre2_get_newline</a></td><td class="halign-left valign-top">Get the newline convention</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_get_offset_limit.html">pcre2_get_offset_limit</a></td><td class="halign-left valign-top">Get the offset limit</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_get_ovector_count.html">pcre2_get_ovector_count</a></td><td class="halign-left valign-top">Get the ovector count</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_get_ovector_pointer.html">pcre2_get_ovector_pointer</a></td><td class="halign-left valign-top">Get a pointer to the ovector</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_get_parens_nest_limit.html">pcre2_get_parens_nest_limit</a></td><td class="halign-left valign-top">Get the parentheses nesting limit</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_get_startchar.html">pcre2_get_startchar</a></td><td class="halign-left valign-top">Get the starting character offset</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_get_subject.html">pcre2_get_subject</a></td><td class="halign-left valign-top">Get a match subject pointer</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_jit_compile.html">pcre2_jit_compile</a></td><td class="halign-left valign-top">Process a compiled pattern with the JIT compiler</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_jit_free_unused_memory.html">pcre2_jit_free_unused_memory</a></td><td class="halign-left valign-top">Free unused JIT memory</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_jit_match.html">pcre2_jit_match</a></td><td class="halign-left valign-top">Fast path interface to JIT matching</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_jit_stack_assign.html">pcre2_jit_stack_assign</a></td><td class="halign-left valign-top">Assign stack for JIT matching</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_jit_stack_create.html">pcre2_jit_stack_create</a></td><td class="halign-left valign-top">Create a stack for JIT matching</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_jit_stack_free.html">pcre2_jit_stack_free</a></td><td class="halign-left valign-top">Free a JIT matching stack</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_maketables.html">pcre2_maketables</a></td><td class="halign-left valign-top">Build character tables in current locale</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_maketables_free.html">pcre2_maketables_free</a></td><td class="halign-left valign-top">Free character tables</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_match.html">pcre2_match</a></td><td class="halign-left valign-top">Match a compiled pattern to a subject string (Perl compatible)</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_match_context_copy.html">pcre2_match_context_copy</a></td><td class="halign-left valign-top">Copy a match context</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_match_context_create.html">pcre2_match_context_create</a></td><td class="halign-left valign-top">Create a match context</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_match_context_free.html">pcre2_match_context_free</a></td><td class="halign-left valign-top">Free a match context</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_match_data_create.html">pcre2_match_data_create</a></td><td class="halign-left valign-top">Create a match data block</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_match_data_create_from_pattern.html">pcre2_match_data_create_from_pattern</a></td><td class="halign-left valign-top">Create a match data block getting size from pattern</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_match_data_free.html">pcre2_match_data_free</a></td><td class="halign-left valign-top">Free a match data block</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_next_match.html">pcre2_next_match</a></td><td class="halign-left valign-top">Get the match parameters for the next match</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_pattern_convert.html">pcre2_pattern_convert</a></td><td class="halign-left valign-top">Foreign pattern converter</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_pattern_info.html">pcre2_pattern_info</a></td><td class="halign-left valign-top">Extract information about a pattern</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_serialize_decode.html">pcre2_serialize_decode</a></td><td class="halign-left valign-top">Decode serialized compiled patterns</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_serialize_encode.html">pcre2_serialize_encode</a></td><td class="halign-left valign-top">Serialize compiled patterns for save/restore</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_serialize_free.html">pcre2_serialize_free</a></td><td class="halign-left valign-top">Free serialized compiled patterns</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_serialize_get_number_of_codes.html">pcre2_serialize_get_number_of_codes</a></td><td class="halign-left valign-top">Get number of serialized compiled patterns</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_set_bsr.html">pcre2_set_bsr</a></td><td class="halign-left valign-top">Set \R convention</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_set_callout.html">pcre2_set_callout</a></td><td class="halign-left valign-top">Set up a callout function</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_set_character_tables.html">pcre2_set_character_tables</a></td><td class="halign-left valign-top">Set character tables</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_set_compile_extra_options.html">pcre2_set_compile_extra_options</a></td><td class="halign-left valign-top">Set compile time extra options</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_set_compile_recursion_guard.html">pcre2_set_compile_recursion_guard</a></td><td class="halign-left valign-top">Set up a compile recursion guard function</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_set_depth_limit.html">pcre2_set_depth_limit</a></td><td class="halign-left valign-top">Set the match backtracking depth limit</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_set_glob_escape.html">pcre2_set_glob_escape</a></td><td class="halign-left valign-top">Set glob escape character</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_set_glob_separator.html">pcre2_set_glob_separator</a></td><td class="halign-left valign-top">Set glob separator character</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_set_heap_limit.html">pcre2_set_heap_limit</a></td><td class="halign-left valign-top">Set the match backtracking heap limit</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_set_match_limit.html">pcre2_set_match_limit</a></td><td class="halign-left valign-top">Set the match limit</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_set_max_pattern_compiled_length.html">pcre2_set_max_pattern_compiled_length</a></td><td class="halign-left valign-top">Set the maximum length of a compiled pattern</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_set_max_pattern_length.html">pcre2_set_max_pattern_length</a></td><td class="halign-left valign-top">Set the maximum length of a pattern</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_set_max_varlookbehind.html">pcre2_set_max_varlookbehind</a></td><td class="halign-left valign-top">Set the maximum match length for a variable-length lookbehind</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_set_newline.html">pcre2_set_newline</a></td><td class="halign-left valign-top">Set the newline convention</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_set_offset_limit.html">pcre2_set_offset_limit</a></td><td class="halign-left valign-top">Set the offset limit</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_set_optimize.html">pcre2_set_optimize</a></td><td class="halign-left valign-top">Set an optimization directive</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_set_parens_nest_limit.html">pcre2_set_parens_nest_limit</a></td><td class="halign-left valign-top">Set the parentheses nesting limit</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_set_recursion_limit.html">pcre2_set_recursion_limit</a></td><td class="halign-left valign-top">Obsolete function; use pcre2_set_depth_limit</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_set_recursion_memory_management.html">pcre2_set_recursion_memory_management</a></td><td class="halign-left valign-top">Obsolete function that does nothing</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_set_substitute_callout.html">pcre2_set_substitute_callout</a></td><td class="halign-left valign-top">Set a substitution callout function</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_set_substitute_case_callout.html">pcre2_set_substitute_case_callout</a></td><td class="halign-left valign-top">Set a substitution case callout function</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_substitute.html">pcre2_substitute</a></td><td class="halign-left valign-top">Replace matched substrings</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_substring_copy_byname.html">pcre2_substring_copy_byname</a></td><td class="halign-left valign-top">Extract named substring into given buffer</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_substring_copy_bynumber.html">pcre2_substring_copy_bynumber</a></td><td class="halign-left valign-top">Extract numbered substring into given buffer</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_substring_free.html">pcre2_substring_free</a></td><td class="halign-left valign-top">Free extracted substring</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_substring_get_byname.html">pcre2_substring_get_byname</a></td><td class="halign-left valign-top">Extract named substring into new memory</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_substring_get_bynumber.html">pcre2_substring_get_bynumber</a></td><td class="halign-left valign-top">Extract numbered substring into new memory</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_substring_length_byname.html">pcre2_substring_length_byname</a></td><td class="halign-left valign-top">Find length of named substring</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_substring_length_bynumber.html">pcre2_substring_length_bynumber</a></td><td class="halign-left valign-top">Find length of numbered substring</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_substring_list_free.html">pcre2_substring_list_free</a></td><td class="halign-left valign-top">Free list of extracted substrings</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_substring_list_get.html">pcre2_substring_list_get</a></td><td class="halign-left valign-top">Extract all substrings into new memory</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_substring_nametable_scan.html">pcre2_substring_nametable_scan</a></td><td class="halign-left valign-top">Find table entries for given string name</td></tr><tr><td class="halign-left valign-top"><a href="./pcre2_substring_number_from_name.html">pcre2_substring_number_from_name</a></td><td class="halign-left valign-top">Convert captured string name to number</td></tr></tbody></table></div></article></div></main><footer class="offline-footer"></footer></body></html>