xref: /PHP-5.5/ext/pcre/pcrelib/doc/pcre.txt (revision ca02d9c2)
1-----------------------------------------------------------------------------
2This file contains a concatenation of the PCRE man pages, converted to plain
3text format for ease of searching with a text editor, or for use on systems
4that do not have a man page processor. The small individual files that give
5synopses of each function in the library have not been included. Neither has
6the pcredemo program. There are separate text files for the pcregrep and
7pcretest commands.
8-----------------------------------------------------------------------------
9
10
11PCRE(3)                    Library Functions Manual                    PCRE(3)
12
13
14
15NAME
16       PCRE - Perl-compatible regular expressions (original API)
17
18PLEASE TAKE NOTE
19
20       This  document relates to PCRE releases that use the original API, with
21       library names libpcre, libpcre16, and libpcre32. January 2015  saw  the
22       first release of a new API, known as PCRE2, with release numbers start-
23       ing  at  10.00  and  library   names   libpcre2-8,   libpcre2-16,   and
24       libpcre2-32. The old libraries (now called PCRE1) are still being main-
25       tained for bug fixes,  but  there  will  be  no  new  development.  New
26       projects are advised to use the new PCRE2 libraries.
27
28
29INTRODUCTION
30
31       The  PCRE  library is a set of functions that implement regular expres-
32       sion pattern matching using the same syntax and semantics as Perl, with
33       just  a few differences. Some features that appeared in Python and PCRE
34       before they appeared in Perl are also available using the  Python  syn-
35       tax,  there  is  some  support for one or two .NET and Oniguruma syntax
36       items, and there is an option for requesting some  minor  changes  that
37       give better JavaScript compatibility.
38
39       Starting with release 8.30, it is possible to compile two separate PCRE
40       libraries:  the  original,  which  supports  8-bit  character   strings
41       (including  UTF-8  strings),  and a second library that supports 16-bit
42       character strings (including UTF-16 strings). The build process  allows
43       either  one  or both to be built. The majority of the work to make this
44       possible was done by Zoltan Herczeg.
45
46       Starting with release 8.32 it is possible to compile a  third  separate
47       PCRE  library  that supports 32-bit character strings (including UTF-32
48       strings). The build process allows any combination of the 8-,  16-  and
49       32-bit  libraries. The work to make this possible was done by Christian
50       Persch.
51
52       The three libraries contain identical sets of  functions,  except  that
53       the  names  in  the 16-bit library start with pcre16_ instead of pcre_,
54       and the names in the 32-bit  library  start  with  pcre32_  instead  of
55       pcre_.  To avoid over-complication and reduce the documentation mainte-
56       nance load, most of the documentation describes the 8-bit library, with
57       the  differences  for  the  16-bit and 32-bit libraries described sepa-
58       rately in the pcre16 and  pcre32  pages.  References  to  functions  or
59       structures  of  the  form  pcre[16|32]_xxx  should  be  read as meaning
60       "pcre_xxx when using the  8-bit  library,  pcre16_xxx  when  using  the
61       16-bit library, or pcre32_xxx when using the 32-bit library".
62
63       The  current implementation of PCRE corresponds approximately with Perl
64       5.12, including support for UTF-8/16/32  encoded  strings  and  Unicode
65       general  category  properties. However, UTF-8/16/32 and Unicode support
66       has to be explicitly enabled; it is not the default. The Unicode tables
67       correspond to Unicode release 6.3.0.
68
69       In  addition to the Perl-compatible matching function, PCRE contains an
70       alternative function that matches the same compiled patterns in a  dif-
71       ferent way. In certain circumstances, the alternative function has some
72       advantages.  For a discussion of the two matching algorithms,  see  the
73       pcrematching page.
74
75       PCRE  is  written  in C and released as a C library. A number of people
76       have written wrappers and interfaces of various kinds.  In  particular,
77       Google  Inc.   have  provided a comprehensive C++ wrapper for the 8-bit
78       library. This is now included as part of  the  PCRE  distribution.  The
79       pcrecpp  page  has  details of this interface. Other people's contribu-
80       tions can be found in the Contrib directory at the  primary  FTP  site,
81       which is:
82
83       ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre
84
85       Details  of  exactly which Perl regular expression features are and are
86       not supported by PCRE are given in separate documents. See the pcrepat-
87       tern  and pcrecompat pages. There is a syntax summary in the pcresyntax
88       page.
89
90       Some features of PCRE can be included, excluded, or  changed  when  the
91       library  is  built.  The pcre_config() function makes it possible for a
92       client to discover which features are  available.  The  features  them-
93       selves  are described in the pcrebuild page. Documentation about build-
94       ing PCRE for various operating systems can be found in the  README  and
95       NON-AUTOTOOLS_BUILD files in the source distribution.
96
97       The  libraries contains a number of undocumented internal functions and
98       data tables that are used by more than one  of  the  exported  external
99       functions,  but  which  are  not  intended for use by external callers.
100       Their names all begin with "_pcre_" or "_pcre16_" or "_pcre32_",  which
101       hopefully  will  not provoke any name clashes. In some environments, it
102       is possible to control which  external  symbols  are  exported  when  a
103       shared  library  is  built, and in these cases the undocumented symbols
104       are not exported.
105
106
107SECURITY CONSIDERATIONS
108
109       If you are using PCRE in a non-UTF application that  permits  users  to
110       supply  arbitrary  patterns  for  compilation, you should be aware of a
111       feature that allows users to turn on UTF support from within a pattern,
112       provided  that  PCRE  was built with UTF support. For example, an 8-bit
113       pattern that begins with "(*UTF8)" or "(*UTF)"  turns  on  UTF-8  mode,
114       which  interprets  patterns and subjects as strings of UTF-8 characters
115       instead of individual 8-bit characters.  This causes both  the  pattern
116       and any data against which it is matched to be checked for UTF-8 valid-
117       ity. If the data string is very long, such a  check  might  use  suffi-
118       ciently  many  resources  as  to cause your application to lose perfor-
119       mance.
120
121       One  way  of  guarding  against  this  possibility  is   to   use   the
122       pcre_fullinfo()  function  to  check the compiled pattern's options for
123       UTF.  Alternatively, from release 8.33, you can set the  PCRE_NEVER_UTF
124       option  at compile time. This causes an compile time error if a pattern
125       contains a UTF-setting sequence.
126
127       If your application is one that supports UTF, be  aware  that  validity
128       checking  can  take time. If the same data string is to be matched many
129       times, you can use the PCRE_NO_UTF[8|16|32]_CHECK option for the second
130       and subsequent matches to save redundant checks.
131
132       Another  way  that  performance can be hit is by running a pattern that
133       has a very large search tree against a string that  will  never  match.
134       Nested  unlimited  repeats in a pattern are a common example. PCRE pro-
135       vides some protection against this: see the PCRE_EXTRA_MATCH_LIMIT fea-
136       ture in the pcreapi page.
137
138
139USER DOCUMENTATION
140
141       The  user  documentation  for PCRE comprises a number of different sec-
142       tions. In the "man" format, each of these is a separate "man page".  In
143       the  HTML  format, each is a separate page, linked from the index page.
144       In the plain text format, the descriptions of the pcregrep and pcretest
145       programs  are  in  files  called pcregrep.txt and pcretest.txt, respec-
146       tively. The remaining sections, except for the pcredemo section  (which
147       is  a  program  listing),  are  concatenated  in  pcre.txt, for ease of
148       searching. The sections are as follows:
149
150         pcre              this document
151         pcre-config       show PCRE installation configuration information
152         pcre16            details of the 16-bit library
153         pcre32            details of the 32-bit library
154         pcreapi           details of PCRE's native C API
155         pcrebuild         building PCRE
156         pcrecallout       details of the callout feature
157         pcrecompat        discussion of Perl compatibility
158         pcrecpp           details of the C++ wrapper for the 8-bit library
159         pcredemo          a demonstration C program that uses PCRE
160         pcregrep          description of the pcregrep command (8-bit only)
161         pcrejit           discussion of the just-in-time optimization support
162         pcrelimits        details of size and other limits
163         pcrematching      discussion of the two matching algorithms
164         pcrepartial       details of the partial matching facility
165         pcrepattern       syntax and semantics of supported
166                             regular expressions
167         pcreperform       discussion of performance issues
168         pcreposix         the POSIX-compatible C API for the 8-bit library
169         pcreprecompile    details of saving and re-using precompiled patterns
170         pcresample        discussion of the pcredemo program
171         pcrestack         discussion of stack usage
172         pcresyntax        quick syntax reference
173         pcretest          description of the pcretest testing command
174         pcreunicode       discussion of Unicode and UTF-8/16/32 support
175
176       In the "man" and HTML formats, there is also a short page  for  each  C
177       library function, listing its arguments and results.
178
179
180AUTHOR
181
182       Philip Hazel
183       University Computing Service
184       Cambridge CB2 3QH, England.
185
186       Putting  an actual email address here seems to have been a spam magnet,
187       so I've taken it away. If you want to email me, use  my  two  initials,
188       followed by the two digits 10, at the domain cam.ac.uk.
189
190
191REVISION
192
193       Last updated: 10 February 2015
194       Copyright (c) 1997-2015 University of Cambridge.
195------------------------------------------------------------------------------
196
197
198PCRE(3)                    Library Functions Manual                    PCRE(3)
199
200
201
202NAME
203       PCRE - Perl-compatible regular expressions
204
205       #include <pcre.h>
206
207
208PCRE 16-BIT API BASIC FUNCTIONS
209
210       pcre16 *pcre16_compile(PCRE_SPTR16 pattern, int options,
211            const char **errptr, int *erroffset,
212            const unsigned char *tableptr);
213
214       pcre16 *pcre16_compile2(PCRE_SPTR16 pattern, int options,
215            int *errorcodeptr,
216            const char **errptr, int *erroffset,
217            const unsigned char *tableptr);
218
219       pcre16_extra *pcre16_study(const pcre16 *code, int options,
220            const char **errptr);
221
222       void pcre16_free_study(pcre16_extra *extra);
223
224       int pcre16_exec(const pcre16 *code, const pcre16_extra *extra,
225            PCRE_SPTR16 subject, int length, int startoffset,
226            int options, int *ovector, int ovecsize);
227
228       int pcre16_dfa_exec(const pcre16 *code, const pcre16_extra *extra,
229            PCRE_SPTR16 subject, int length, int startoffset,
230            int options, int *ovector, int ovecsize,
231            int *workspace, int wscount);
232
233
234PCRE 16-BIT API STRING EXTRACTION FUNCTIONS
235
236       int pcre16_copy_named_substring(const pcre16 *code,
237            PCRE_SPTR16 subject, int *ovector,
238            int stringcount, PCRE_SPTR16 stringname,
239            PCRE_UCHAR16 *buffer, int buffersize);
240
241       int pcre16_copy_substring(PCRE_SPTR16 subject, int *ovector,
242            int stringcount, int stringnumber, PCRE_UCHAR16 *buffer,
243            int buffersize);
244
245       int pcre16_get_named_substring(const pcre16 *code,
246            PCRE_SPTR16 subject, int *ovector,
247            int stringcount, PCRE_SPTR16 stringname,
248            PCRE_SPTR16 *stringptr);
249
250       int pcre16_get_stringnumber(const pcre16 *code,
251            PCRE_SPTR16 name);
252
253       int pcre16_get_stringtable_entries(const pcre16 *code,
254            PCRE_SPTR16 name, PCRE_UCHAR16 **first, PCRE_UCHAR16 **last);
255
256       int pcre16_get_substring(PCRE_SPTR16 subject, int *ovector,
257            int stringcount, int stringnumber,
258            PCRE_SPTR16 *stringptr);
259
260       int pcre16_get_substring_list(PCRE_SPTR16 subject,
261            int *ovector, int stringcount, PCRE_SPTR16 **listptr);
262
263       void pcre16_free_substring(PCRE_SPTR16 stringptr);
264
265       void pcre16_free_substring_list(PCRE_SPTR16 *stringptr);
266
267
268PCRE 16-BIT API AUXILIARY FUNCTIONS
269
270       pcre16_jit_stack *pcre16_jit_stack_alloc(int startsize, int maxsize);
271
272       void pcre16_jit_stack_free(pcre16_jit_stack *stack);
273
274       void pcre16_assign_jit_stack(pcre16_extra *extra,
275            pcre16_jit_callback callback, void *data);
276
277       const unsigned char *pcre16_maketables(void);
278
279       int pcre16_fullinfo(const pcre16 *code, const pcre16_extra *extra,
280            int what, void *where);
281
282       int pcre16_refcount(pcre16 *code, int adjust);
283
284       int pcre16_config(int what, void *where);
285
286       const char *pcre16_version(void);
287
288       int pcre16_pattern_to_host_byte_order(pcre16 *code,
289            pcre16_extra *extra, const unsigned char *tables);
290
291
292PCRE 16-BIT API INDIRECTED FUNCTIONS
293
294       void *(*pcre16_malloc)(size_t);
295
296       void (*pcre16_free)(void *);
297
298       void *(*pcre16_stack_malloc)(size_t);
299
300       void (*pcre16_stack_free)(void *);
301
302       int (*pcre16_callout)(pcre16_callout_block *);
303
304
305PCRE 16-BIT API 16-BIT-ONLY FUNCTION
306
307       int pcre16_utf16_to_host_byte_order(PCRE_UCHAR16 *output,
308            PCRE_SPTR16 input, int length, int *byte_order,
309            int keep_boms);
310
311
312THE PCRE 16-BIT LIBRARY
313
314       Starting  with  release  8.30, it is possible to compile a PCRE library
315       that supports 16-bit character strings, including  UTF-16  strings,  as
316       well  as  or instead of the original 8-bit library. The majority of the
317       work to make  this  possible  was  done  by  Zoltan  Herczeg.  The  two
318       libraries contain identical sets of functions, used in exactly the same
319       way. Only the names of the functions and the data types of their  argu-
320       ments  and results are different. To avoid over-complication and reduce
321       the documentation maintenance load,  most  of  the  PCRE  documentation
322       describes  the  8-bit  library,  with only occasional references to the
323       16-bit library. This page describes what is different when you use  the
324       16-bit library.
325
326       WARNING:  A  single  application can be linked with both libraries, but
327       you must take care when processing any particular pattern to use  func-
328       tions  from  just one library. For example, if you want to study a pat-
329       tern that was compiled with  pcre16_compile(),  you  must  do  so  with
330       pcre16_study(), not pcre_study(), and you must free the study data with
331       pcre16_free_study().
332
333
334THE HEADER FILE
335
336       There is only one header file, pcre.h. It contains prototypes  for  all
337       the functions in all libraries, as well as definitions of flags, struc-
338       tures, error codes, etc.
339
340
341THE LIBRARY NAME
342
343       In Unix-like systems, the 16-bit library is called libpcre16,  and  can
344       normally  be  accesss  by adding -lpcre16 to the command for linking an
345       application that uses PCRE.
346
347
348STRING TYPES
349
350       In the 8-bit library, strings are passed to PCRE library  functions  as
351       vectors  of  bytes  with  the  C  type "char *". In the 16-bit library,
352       strings are passed as vectors of unsigned 16-bit quantities. The  macro
353       PCRE_UCHAR16  specifies  an  appropriate  data type, and PCRE_SPTR16 is
354       defined as "const PCRE_UCHAR16 *". In very  many  environments,  "short
355       int" is a 16-bit data type. When PCRE is built, it defines PCRE_UCHAR16
356       as "unsigned short int", but checks that it really  is  a  16-bit  data
357       type.  If  it is not, the build fails with an error message telling the
358       maintainer to modify the definition appropriately.
359
360
361STRUCTURE TYPES
362
363       The types of the opaque structures that are used  for  compiled  16-bit
364       patterns  and  JIT stacks are pcre16 and pcre16_jit_stack respectively.
365       The  type  of  the  user-accessible  structure  that  is  returned   by
366       pcre16_study()  is  pcre16_extra, and the type of the structure that is
367       used for passing data to a callout  function  is  pcre16_callout_block.
368       These structures contain the same fields, with the same names, as their
369       8-bit counterparts. The only difference is that pointers  to  character
370       strings are 16-bit instead of 8-bit types.
371
372
37316-BIT FUNCTIONS
374
375       For  every function in the 8-bit library there is a corresponding func-
376       tion in the 16-bit library with a name that starts with pcre16_ instead
377       of  pcre_.  The  prototypes are listed above. In addition, there is one
378       extra function, pcre16_utf16_to_host_byte_order(). This  is  a  utility
379       function  that converts a UTF-16 character string to host byte order if
380       necessary. The other 16-bit  functions  expect  the  strings  they  are
381       passed to be in host byte order.
382
383       The input and output arguments of pcre16_utf16_to_host_byte_order() may
384       point to the same address, that is, conversion in place  is  supported.
385       The output buffer must be at least as long as the input.
386
387       The  length  argument  specifies the number of 16-bit data units in the
388       input string; a negative value specifies a zero-terminated string.
389
390       If byte_order is NULL, it is assumed that the string starts off in host
391       byte  order. This may be changed by byte-order marks (BOMs) anywhere in
392       the string (commonly as the first character).
393
394       If byte_order is not NULL, a non-zero value of the integer to which  it
395       points  means  that  the input starts off in host byte order, otherwise
396       the opposite order is assumed. Again, BOMs in  the  string  can  change
397       this. The final byte order is passed back at the end of processing.
398
399       If  keep_boms  is  not  zero,  byte-order  mark characters (0xfeff) are
400       copied into the output string. Otherwise they are discarded.
401
402       The result of the function is the number of 16-bit  units  placed  into
403       the  output  buffer,  including  the  zero terminator if the string was
404       zero-terminated.
405
406
407SUBJECT STRING OFFSETS
408
409       The lengths and starting offsets of subject strings must  be  specified
410       in  16-bit  data units, and the offsets within subject strings that are
411       returned by the matching functions are in also 16-bit units rather than
412       bytes.
413
414
415NAMED SUBPATTERNS
416
417       The  name-to-number translation table that is maintained for named sub-
418       patterns uses 16-bit characters.  The  pcre16_get_stringtable_entries()
419       function returns the length of each entry in the table as the number of
420       16-bit data units.
421
422
423OPTION NAMES
424
425       There   are   two   new   general   option   names,   PCRE_UTF16    and
426       PCRE_NO_UTF16_CHECK,     which     correspond    to    PCRE_UTF8    and
427       PCRE_NO_UTF8_CHECK in the 8-bit library. In  fact,  these  new  options
428       define  the  same bits in the options word. There is a discussion about
429       the validity of UTF-16 strings in the pcreunicode page.
430
431       For the pcre16_config() function there is an  option  PCRE_CONFIG_UTF16
432       that  returns  1  if UTF-16 support is configured, otherwise 0. If this
433       option  is  given  to  pcre_config()  or  pcre32_config(),  or  if  the
434       PCRE_CONFIG_UTF8  or  PCRE_CONFIG_UTF32  option is given to pcre16_con-
435       fig(), the result is the PCRE_ERROR_BADOPTION error.
436
437
438CHARACTER CODES
439
440       In 16-bit mode, when  PCRE_UTF16  is  not  set,  character  values  are
441       treated in the same way as in 8-bit, non UTF-8 mode, except, of course,
442       that they can range from 0 to 0xffff instead of 0  to  0xff.  Character
443       types  for characters less than 0xff can therefore be influenced by the
444       locale in the same way as before.  Characters greater  than  0xff  have
445       only one case, and no "type" (such as letter or digit).
446
447       In  UTF-16  mode,  the  character  code  is  Unicode, in the range 0 to
448       0x10ffff, with the exception of values in the range  0xd800  to  0xdfff
449       because  those  are "surrogate" values that are used in pairs to encode
450       values greater than 0xffff.
451
452       A UTF-16 string can indicate its endianness by special code knows as  a
453       byte-order mark (BOM). The PCRE functions do not handle this, expecting
454       strings  to  be  in  host  byte  order.  A  utility   function   called
455       pcre16_utf16_to_host_byte_order()  is  provided  to help with this (see
456       above).
457
458
459ERROR NAMES
460
461       The errors PCRE_ERROR_BADUTF16_OFFSET and PCRE_ERROR_SHORTUTF16  corre-
462       spond  to  their  8-bit  counterparts.  The error PCRE_ERROR_BADMODE is
463       given when a compiled pattern is passed to a  function  that  processes
464       patterns  in  the  other  mode, for example, if a pattern compiled with
465       pcre_compile() is passed to pcre16_exec().
466
467       There are new error codes whose names  begin  with  PCRE_UTF16_ERR  for
468       invalid  UTF-16  strings,  corresponding to the PCRE_UTF8_ERR codes for
469       UTF-8 strings that are described in the section entitled "Reason  codes
470       for  invalid UTF-8 strings" in the main pcreapi page. The UTF-16 errors
471       are:
472
473         PCRE_UTF16_ERR1  Missing low surrogate at end of string
474         PCRE_UTF16_ERR2  Invalid low surrogate follows high surrogate
475         PCRE_UTF16_ERR3  Isolated low surrogate
476         PCRE_UTF16_ERR4  Non-character
477
478
479ERROR TEXTS
480
481       If there is an error while compiling a pattern, the error text that  is
482       passed  back by pcre16_compile() or pcre16_compile2() is still an 8-bit
483       character string, zero-terminated.
484
485
486CALLOUTS
487
488       The subject and mark fields in the callout block that is  passed  to  a
489       callout function point to 16-bit vectors.
490
491
492TESTING
493
494       The  pcretest  program continues to operate with 8-bit input and output
495       files, but it can be used for testing the 16-bit library. If it is  run
496       with the command line option -16, patterns and subject strings are con-
497       verted from 8-bit to 16-bit before being passed to PCRE, and the 16-bit
498       library  functions  are used instead of the 8-bit ones. Returned 16-bit
499       strings are converted to 8-bit for output. If both the  8-bit  and  the
500       32-bit libraries were not compiled, pcretest defaults to 16-bit and the
501       -16 option is ignored.
502
503       When PCRE is being built, the RunTest script that is  called  by  "make
504       check"  uses  the  pcretest  -C  option to discover which of the 8-bit,
505       16-bit and 32-bit libraries has been built, and runs the  tests  appro-
506       priately.
507
508
509NOT SUPPORTED IN 16-BIT MODE
510
511       Not all the features of the 8-bit library are available with the 16-bit
512       library. The C++ and POSIX wrapper functions  support  only  the  8-bit
513       library, and the pcregrep program is at present 8-bit only.
514
515
516AUTHOR
517
518       Philip Hazel
519       University Computing Service
520       Cambridge CB2 3QH, England.
521
522
523REVISION
524
525       Last updated: 12 May 2013
526       Copyright (c) 1997-2013 University of Cambridge.
527------------------------------------------------------------------------------
528
529
530PCRE(3)                    Library Functions Manual                    PCRE(3)
531
532
533
534NAME
535       PCRE - Perl-compatible regular expressions
536
537       #include <pcre.h>
538
539
540PCRE 32-BIT API BASIC FUNCTIONS
541
542       pcre32 *pcre32_compile(PCRE_SPTR32 pattern, int options,
543            const char **errptr, int *erroffset,
544            const unsigned char *tableptr);
545
546       pcre32 *pcre32_compile2(PCRE_SPTR32 pattern, int options,
547            int *errorcodeptr,
548            const unsigned char *tableptr);
549
550       pcre32_extra *pcre32_study(const pcre32 *code, int options,
551            const char **errptr);
552
553       void pcre32_free_study(pcre32_extra *extra);
554
555       int pcre32_exec(const pcre32 *code, const pcre32_extra *extra,
556            PCRE_SPTR32 subject, int length, int startoffset,
557            int options, int *ovector, int ovecsize);
558
559       int pcre32_dfa_exec(const pcre32 *code, const pcre32_extra *extra,
560            PCRE_SPTR32 subject, int length, int startoffset,
561            int options, int *ovector, int ovecsize,
562            int *workspace, int wscount);
563
564
565PCRE 32-BIT API STRING EXTRACTION FUNCTIONS
566
567       int pcre32_copy_named_substring(const pcre32 *code,
568            PCRE_SPTR32 subject, int *ovector,
569            int stringcount, PCRE_SPTR32 stringname,
570            PCRE_UCHAR32 *buffer, int buffersize);
571
572       int pcre32_copy_substring(PCRE_SPTR32 subject, int *ovector,
573            int stringcount, int stringnumber, PCRE_UCHAR32 *buffer,
574            int buffersize);
575
576       int pcre32_get_named_substring(const pcre32 *code,
577            PCRE_SPTR32 subject, int *ovector,
578            int stringcount, PCRE_SPTR32 stringname,
579            PCRE_SPTR32 *stringptr);
580
581       int pcre32_get_stringnumber(const pcre32 *code,
582            PCRE_SPTR32 name);
583
584       int pcre32_get_stringtable_entries(const pcre32 *code,
585            PCRE_SPTR32 name, PCRE_UCHAR32 **first, PCRE_UCHAR32 **last);
586
587       int pcre32_get_substring(PCRE_SPTR32 subject, int *ovector,
588            int stringcount, int stringnumber,
589            PCRE_SPTR32 *stringptr);
590
591       int pcre32_get_substring_list(PCRE_SPTR32 subject,
592            int *ovector, int stringcount, PCRE_SPTR32 **listptr);
593
594       void pcre32_free_substring(PCRE_SPTR32 stringptr);
595
596       void pcre32_free_substring_list(PCRE_SPTR32 *stringptr);
597
598
599PCRE 32-BIT API AUXILIARY FUNCTIONS
600
601       pcre32_jit_stack *pcre32_jit_stack_alloc(int startsize, int maxsize);
602
603       void pcre32_jit_stack_free(pcre32_jit_stack *stack);
604
605       void pcre32_assign_jit_stack(pcre32_extra *extra,
606            pcre32_jit_callback callback, void *data);
607
608       const unsigned char *pcre32_maketables(void);
609
610       int pcre32_fullinfo(const pcre32 *code, const pcre32_extra *extra,
611            int what, void *where);
612
613       int pcre32_refcount(pcre32 *code, int adjust);
614
615       int pcre32_config(int what, void *where);
616
617       const char *pcre32_version(void);
618
619       int pcre32_pattern_to_host_byte_order(pcre32 *code,
620            pcre32_extra *extra, const unsigned char *tables);
621
622
623PCRE 32-BIT API INDIRECTED FUNCTIONS
624
625       void *(*pcre32_malloc)(size_t);
626
627       void (*pcre32_free)(void *);
628
629       void *(*pcre32_stack_malloc)(size_t);
630
631       void (*pcre32_stack_free)(void *);
632
633       int (*pcre32_callout)(pcre32_callout_block *);
634
635
636PCRE 32-BIT API 32-BIT-ONLY FUNCTION
637
638       int pcre32_utf32_to_host_byte_order(PCRE_UCHAR32 *output,
639            PCRE_SPTR32 input, int length, int *byte_order,
640            int keep_boms);
641
642
643THE PCRE 32-BIT LIBRARY
644
645       Starting  with  release  8.32, it is possible to compile a PCRE library
646       that supports 32-bit character strings, including  UTF-32  strings,  as
647       well as or instead of the original 8-bit library. This work was done by
648       Christian Persch, based on the work done  by  Zoltan  Herczeg  for  the
649       16-bit  library.  All  three  libraries contain identical sets of func-
650       tions, used in exactly the same way.  Only the names of  the  functions
651       and  the  data  types  of their arguments and results are different. To
652       avoid over-complication and reduce the documentation maintenance  load,
653       most  of  the PCRE documentation describes the 8-bit library, with only
654       occasional references to the 16-bit and  32-bit  libraries.  This  page
655       describes what is different when you use the 32-bit library.
656
657       WARNING:  A  single  application  can  be linked with all or any of the
658       three libraries, but you must take care when processing any  particular
659       pattern  to  use  functions  from just one library. For example, if you
660       want to study a pattern that was compiled  with  pcre32_compile(),  you
661       must do so with pcre32_study(), not pcre_study(), and you must free the
662       study data with pcre32_free_study().
663
664
665THE HEADER FILE
666
667       There is only one header file, pcre.h. It contains prototypes  for  all
668       the functions in all libraries, as well as definitions of flags, struc-
669       tures, error codes, etc.
670
671
672THE LIBRARY NAME
673
674       In Unix-like systems, the 32-bit library is called libpcre32,  and  can
675       normally  be  accesss  by adding -lpcre32 to the command for linking an
676       application that uses PCRE.
677
678
679STRING TYPES
680
681       In the 8-bit library, strings are passed to PCRE library  functions  as
682       vectors  of  bytes  with  the  C  type "char *". In the 32-bit library,
683       strings are passed as vectors of unsigned 32-bit quantities. The  macro
684       PCRE_UCHAR32  specifies  an  appropriate  data type, and PCRE_SPTR32 is
685       defined as "const PCRE_UCHAR32 *". In very many environments, "unsigned
686       int" is a 32-bit data type. When PCRE is built, it defines PCRE_UCHAR32
687       as "unsigned int", but checks that it really is a 32-bit data type.  If
688       it is not, the build fails with an error message telling the maintainer
689       to modify the definition appropriately.
690
691
692STRUCTURE TYPES
693
694       The types of the opaque structures that are used  for  compiled  32-bit
695       patterns  and  JIT stacks are pcre32 and pcre32_jit_stack respectively.
696       The  type  of  the  user-accessible  structure  that  is  returned   by
697       pcre32_study()  is  pcre32_extra, and the type of the structure that is
698       used for passing data to a callout  function  is  pcre32_callout_block.
699       These structures contain the same fields, with the same names, as their
700       8-bit counterparts. The only difference is that pointers  to  character
701       strings are 32-bit instead of 8-bit types.
702
703
70432-BIT FUNCTIONS
705
706       For  every function in the 8-bit library there is a corresponding func-
707       tion in the 32-bit library with a name that starts with pcre32_ instead
708       of  pcre_.  The  prototypes are listed above. In addition, there is one
709       extra function, pcre32_utf32_to_host_byte_order(). This  is  a  utility
710       function  that converts a UTF-32 character string to host byte order if
711       necessary. The other 32-bit  functions  expect  the  strings  they  are
712       passed to be in host byte order.
713
714       The input and output arguments of pcre32_utf32_to_host_byte_order() may
715       point to the same address, that is, conversion in place  is  supported.
716       The output buffer must be at least as long as the input.
717
718       The  length  argument  specifies the number of 32-bit data units in the
719       input string; a negative value specifies a zero-terminated string.
720
721       If byte_order is NULL, it is assumed that the string starts off in host
722       byte  order. This may be changed by byte-order marks (BOMs) anywhere in
723       the string (commonly as the first character).
724
725       If byte_order is not NULL, a non-zero value of the integer to which  it
726       points  means  that  the input starts off in host byte order, otherwise
727       the opposite order is assumed. Again, BOMs in  the  string  can  change
728       this. The final byte order is passed back at the end of processing.
729
730       If  keep_boms  is  not  zero,  byte-order  mark characters (0xfeff) are
731       copied into the output string. Otherwise they are discarded.
732
733       The result of the function is the number of 32-bit  units  placed  into
734       the  output  buffer,  including  the  zero terminator if the string was
735       zero-terminated.
736
737
738SUBJECT STRING OFFSETS
739
740       The lengths and starting offsets of subject strings must  be  specified
741       in  32-bit  data units, and the offsets within subject strings that are
742       returned by the matching functions are in also 32-bit units rather than
743       bytes.
744
745
746NAMED SUBPATTERNS
747
748       The  name-to-number translation table that is maintained for named sub-
749       patterns uses 32-bit characters.  The  pcre32_get_stringtable_entries()
750       function returns the length of each entry in the table as the number of
751       32-bit data units.
752
753
754OPTION NAMES
755
756       There   are   two   new   general   option   names,   PCRE_UTF32    and
757       PCRE_NO_UTF32_CHECK,     which     correspond    to    PCRE_UTF8    and
758       PCRE_NO_UTF8_CHECK in the 8-bit library. In  fact,  these  new  options
759       define  the  same bits in the options word. There is a discussion about
760       the validity of UTF-32 strings in the pcreunicode page.
761
762       For the pcre32_config() function there is an  option  PCRE_CONFIG_UTF32
763       that  returns  1  if UTF-32 support is configured, otherwise 0. If this
764       option  is  given  to  pcre_config()  or  pcre16_config(),  or  if  the
765       PCRE_CONFIG_UTF8  or  PCRE_CONFIG_UTF16  option is given to pcre32_con-
766       fig(), the result is the PCRE_ERROR_BADOPTION error.
767
768
769CHARACTER CODES
770
771       In 32-bit mode, when  PCRE_UTF32  is  not  set,  character  values  are
772       treated in the same way as in 8-bit, non UTF-8 mode, except, of course,
773       that they can range from 0 to 0x7fffffff instead of 0 to 0xff.  Charac-
774       ter  types for characters less than 0xff can therefore be influenced by
775       the locale in the same way as before.   Characters  greater  than  0xff
776       have only one case, and no "type" (such as letter or digit).
777
778       In  UTF-32  mode,  the  character  code  is  Unicode, in the range 0 to
779       0x10ffff, with the exception of values in the range  0xd800  to  0xdfff
780       because those are "surrogate" values that are ill-formed in UTF-32.
781
782       A  UTF-32 string can indicate its endianness by special code knows as a
783       byte-order mark (BOM). The PCRE functions do not handle this, expecting
784       strings   to   be  in  host  byte  order.  A  utility  function  called
785       pcre32_utf32_to_host_byte_order() is provided to help  with  this  (see
786       above).
787
788
789ERROR NAMES
790
791       The  error  PCRE_ERROR_BADUTF32  corresponds  to its 8-bit counterpart.
792       The error PCRE_ERROR_BADMODE is given when a compiled pattern is passed
793       to  a  function that processes patterns in the other mode, for example,
794       if a pattern compiled with pcre_compile() is passed to pcre32_exec().
795
796       There are new error codes whose names  begin  with  PCRE_UTF32_ERR  for
797       invalid  UTF-32  strings,  corresponding to the PCRE_UTF8_ERR codes for
798       UTF-8 strings that are described in the section entitled "Reason  codes
799       for  invalid UTF-8 strings" in the main pcreapi page. The UTF-32 errors
800       are:
801
802         PCRE_UTF32_ERR1  Surrogate character (range from 0xd800 to 0xdfff)
803         PCRE_UTF32_ERR2  Non-character
804         PCRE_UTF32_ERR3  Character > 0x10ffff
805
806
807ERROR TEXTS
808
809       If there is an error while compiling a pattern, the error text that  is
810       passed  back by pcre32_compile() or pcre32_compile2() is still an 8-bit
811       character string, zero-terminated.
812
813
814CALLOUTS
815
816       The subject and mark fields in the callout block that is  passed  to  a
817       callout function point to 32-bit vectors.
818
819
820TESTING
821
822       The  pcretest  program continues to operate with 8-bit input and output
823       files, but it can be used for testing the 32-bit library. If it is  run
824       with the command line option -32, patterns and subject strings are con-
825       verted from 8-bit to 32-bit before being passed to PCRE, and the 32-bit
826       library  functions  are used instead of the 8-bit ones. Returned 32-bit
827       strings are converted to 8-bit for output. If both the  8-bit  and  the
828       16-bit libraries were not compiled, pcretest defaults to 32-bit and the
829       -32 option is ignored.
830
831       When PCRE is being built, the RunTest script that is  called  by  "make
832       check"  uses  the  pcretest  -C  option to discover which of the 8-bit,
833       16-bit and 32-bit libraries has been built, and runs the  tests  appro-
834       priately.
835
836
837NOT SUPPORTED IN 32-BIT MODE
838
839       Not all the features of the 8-bit library are available with the 32-bit
840       library. The C++ and POSIX wrapper functions  support  only  the  8-bit
841       library, and the pcregrep program is at present 8-bit only.
842
843
844AUTHOR
845
846       Philip Hazel
847       University Computing Service
848       Cambridge CB2 3QH, England.
849
850
851REVISION
852
853       Last updated: 12 May 2013
854       Copyright (c) 1997-2013 University of Cambridge.
855------------------------------------------------------------------------------
856
857
858PCREBUILD(3)               Library Functions Manual               PCREBUILD(3)
859
860
861
862NAME
863       PCRE - Perl-compatible regular expressions
864
865BUILDING PCRE
866
867       PCRE  is  distributed with a configure script that can be used to build
868       the library in Unix-like environments using the applications  known  as
869       Autotools.   Also  in  the  distribution  are files to support building
870       using CMake instead of configure. The text file README contains general
871       information  about  building  with Autotools (some of which is repeated
872       below), and also has some comments about building on various  operating
873       systems.  There  is  a lot more information about building PCRE without
874       using Autotools (including information about using CMake  and  building
875       "by  hand")  in  the  text file called NON-AUTOTOOLS-BUILD.  You should
876       consult this file as well as the README file if you are building  in  a
877       non-Unix-like environment.
878
879
880PCRE BUILD-TIME OPTIONS
881
882       The  rest of this document describes the optional features of PCRE that
883       can be selected when the library is compiled. It  assumes  use  of  the
884       configure  script,  where  the  optional features are selected or dese-
885       lected by providing options to configure before running the  make  com-
886       mand.  However,  the same options can be selected in both Unix-like and
887       non-Unix-like environments using the GUI facility of cmake-gui  if  you
888       are using CMake instead of configure to build PCRE.
889
890       If  you  are not using Autotools or CMake, option selection can be done
891       by editing the config.h file, or by passing parameter settings  to  the
892       compiler, as described in NON-AUTOTOOLS-BUILD.
893
894       The complete list of options for configure (which includes the standard
895       ones such as the  selection  of  the  installation  directory)  can  be
896       obtained by running
897
898         ./configure --help
899
900       The  following  sections  include  descriptions  of options whose names
901       begin with --enable or --disable. These settings specify changes to the
902       defaults  for  the configure command. Because of the way that configure
903       works, --enable and --disable always come in pairs, so  the  complemen-
904       tary  option always exists as well, but as it specifies the default, it
905       is not described.
906
907
908BUILDING 8-BIT, 16-BIT AND 32-BIT LIBRARIES
909
910       By default, a library called libpcre  is  built,  containing  functions
911       that  take  string  arguments  contained in vectors of bytes, either as
912       single-byte characters, or interpreted as UTF-8 strings. You  can  also
913       build  a  separate library, called libpcre16, in which strings are con-
914       tained in vectors of 16-bit data units and interpreted either  as  sin-
915       gle-unit characters or UTF-16 strings, by adding
916
917         --enable-pcre16
918
919       to  the  configure  command.  You  can  also build yet another separate
920       library, called libpcre32, in which strings are contained in vectors of
921       32-bit  data  units and interpreted either as single-unit characters or
922       UTF-32 strings, by adding
923
924         --enable-pcre32
925
926       to the configure command. If you do not want the 8-bit library, add
927
928         --disable-pcre8
929
930       as well. At least one of the three libraries must be built.  Note  that
931       the  C++  and  POSIX  wrappers are for the 8-bit library only, and that
932       pcregrep is an 8-bit program. None of these are  built  if  you  select
933       only the 16-bit or 32-bit libraries.
934
935
936BUILDING SHARED AND STATIC LIBRARIES
937
938       The  Autotools  PCRE building process uses libtool to build both shared
939       and static libraries by default. You  can  suppress  one  of  these  by
940       adding one of
941
942         --disable-shared
943         --disable-static
944
945       to the configure command, as required.
946
947
948C++ SUPPORT
949
950       By  default,  if the 8-bit library is being built, the configure script
951       will search for a C++ compiler and C++ header files. If it finds  them,
952       it  automatically  builds  the C++ wrapper library (which supports only
953       8-bit strings). You can disable this by adding
954
955         --disable-cpp
956
957       to the configure command.
958
959
960UTF-8, UTF-16 AND UTF-32 SUPPORT
961
962       To build PCRE with support for UTF Unicode character strings, add
963
964         --enable-utf
965
966       to the configure command. This setting applies to all three  libraries,
967       adding  support  for  UTF-8 to the 8-bit library, support for UTF-16 to
968       the 16-bit library, and  support  for  UTF-32  to  the  to  the  32-bit
969       library.  There  are no separate options for enabling UTF-8, UTF-16 and
970       UTF-32 independently because that would allow ridiculous settings  such
971       as  requesting UTF-16 support while building only the 8-bit library. It
972       is not possible to build one library with UTF support and another with-
973       out  in the same configuration. (For backwards compatibility, --enable-
974       utf8 is a synonym of --enable-utf.)
975
976       Of itself, this setting does not make  PCRE  treat  strings  as  UTF-8,
977       UTF-16  or UTF-32. As well as compiling PCRE with this option, you also
978       have have to set the PCRE_UTF8, PCRE_UTF16  or  PCRE_UTF32  option  (as
979       appropriate) when you call one of the pattern compiling functions.
980
981       If  you  set --enable-utf when compiling in an EBCDIC environment, PCRE
982       expects its input to be either ASCII or UTF-8 (depending  on  the  run-
983       time option). It is not possible to support both EBCDIC and UTF-8 codes
984       in the same version of  the  library.  Consequently,  --enable-utf  and
985       --enable-ebcdic are mutually exclusive.
986
987
988UNICODE CHARACTER PROPERTY SUPPORT
989
990       UTF  support allows the libraries to process character codepoints up to
991       0x10ffff in the strings that they handle. On its own, however, it  does
992       not provide any facilities for accessing the properties of such charac-
993       ters. If you want to be able to use the pattern escapes \P, \p, and \X,
994       which refer to Unicode character properties, you must add
995
996         --enable-unicode-properties
997
998       to  the  configure  command. This implies UTF support, even if you have
999       not explicitly requested it.
1000
1001       Including Unicode property support adds around 30K  of  tables  to  the
1002       PCRE  library.  Only  the general category properties such as Lu and Nd
1003       are supported. Details are given in the pcrepattern documentation.
1004
1005
1006JUST-IN-TIME COMPILER SUPPORT
1007
1008       Just-in-time compiler support is included in the build by specifying
1009
1010         --enable-jit
1011
1012       This support is available only for certain hardware  architectures.  If
1013       this  option  is  set  for  an unsupported architecture, a compile time
1014       error occurs.  See the pcrejit documentation for a  discussion  of  JIT
1015       usage. When JIT support is enabled, pcregrep automatically makes use of
1016       it, unless you add
1017
1018         --disable-pcregrep-jit
1019
1020       to the "configure" command.
1021
1022
1023CODE VALUE OF NEWLINE
1024
1025       By default, PCRE interprets the linefeed (LF) character  as  indicating
1026       the  end  of  a line. This is the normal newline character on Unix-like
1027       systems. You can compile PCRE to use carriage return (CR)  instead,  by
1028       adding
1029
1030         --enable-newline-is-cr
1031
1032       to  the  configure  command.  There  is  also  a --enable-newline-is-lf
1033       option, which explicitly specifies linefeed as the newline character.
1034
1035       Alternatively, you can specify that line endings are to be indicated by
1036       the two character sequence CRLF. If you want this, add
1037
1038         --enable-newline-is-crlf
1039
1040       to the configure command. There is a fourth option, specified by
1041
1042         --enable-newline-is-anycrlf
1043
1044       which  causes  PCRE  to recognize any of the three sequences CR, LF, or
1045       CRLF as indicating a line ending. Finally, a fifth option, specified by
1046
1047         --enable-newline-is-any
1048
1049       causes PCRE to recognize any Unicode newline sequence.
1050
1051       Whatever line ending convention is selected when PCRE is built  can  be
1052       overridden  when  the library functions are called. At build time it is
1053       conventional to use the standard for your operating system.
1054
1055
1056WHAT \R MATCHES
1057
1058       By default, the sequence \R in a pattern matches  any  Unicode  newline
1059       sequence,  whatever  has  been selected as the line ending sequence. If
1060       you specify
1061
1062         --enable-bsr-anycrlf
1063
1064       the default is changed so that \R matches only CR, LF, or  CRLF.  What-
1065       ever  is selected when PCRE is built can be overridden when the library
1066       functions are called.
1067
1068
1069POSIX MALLOC USAGE
1070
1071       When the 8-bit library is called through the POSIX interface  (see  the
1072       pcreposix  documentation),  additional  working storage is required for
1073       holding the pointers to capturing  substrings,  because  PCRE  requires
1074       three integers per substring, whereas the POSIX interface provides only
1075       two. If the number of expected substrings is small, the  wrapper  func-
1076       tion  uses  space  on the stack, because this is faster than using mal-
1077       loc() for each call. The default threshold above which the stack is  no
1078       longer used is 10; it can be changed by adding a setting such as
1079
1080         --with-posix-malloc-threshold=20
1081
1082       to the configure command.
1083
1084
1085HANDLING VERY LARGE PATTERNS
1086
1087       Within  a  compiled  pattern,  offset values are used to point from one
1088       part to another (for example, from an opening parenthesis to an  alter-
1089       nation  metacharacter).  By default, in the 8-bit and 16-bit libraries,
1090       two-byte values are used for these offsets, leading to a  maximum  size
1091       for  a compiled pattern of around 64K. This is sufficient to handle all
1092       but the most gigantic patterns.  Nevertheless, some people do  want  to
1093       process  truly  enormous patterns, so it is possible to compile PCRE to
1094       use three-byte or four-byte offsets by adding a setting such as
1095
1096         --with-link-size=3
1097
1098       to the configure command. The value given must be 2, 3, or 4.  For  the
1099       16-bit  library,  a  value of 3 is rounded up to 4. In these libraries,
1100       using longer offsets slows down the operation of PCRE because it has to
1101       load  additional  data  when  handling them. For the 32-bit library the
1102       value is always 4 and cannot be overridden; the value  of  --with-link-
1103       size is ignored.
1104
1105
1106AVOIDING EXCESSIVE STACK USAGE
1107
1108       When matching with the pcre_exec() function, PCRE implements backtrack-
1109       ing by making recursive calls to an internal function  called  match().
1110       In  environments  where  the size of the stack is limited, this can se-
1111       verely limit PCRE's operation. (The Unix environment does  not  usually
1112       suffer from this problem, but it may sometimes be necessary to increase
1113       the maximum stack size.  There is a discussion in the  pcrestack  docu-
1114       mentation.)  An alternative approach to recursion that uses memory from
1115       the heap to remember data, instead of using recursive  function  calls,
1116       has  been  implemented to work round the problem of limited stack size.
1117       If you want to build a version of PCRE that works this way, add
1118
1119         --disable-stack-for-recursion
1120
1121       to the configure command. With this configuration, PCRE  will  use  the
1122       pcre_stack_malloc  and pcre_stack_free variables to call memory manage-
1123       ment functions. By default these point to malloc() and free(), but  you
1124       can replace the pointers so that your own functions are used instead.
1125
1126       Separate  functions  are  provided  rather  than  using pcre_malloc and
1127       pcre_free because the  usage  is  very  predictable:  the  block  sizes
1128       requested  are  always  the  same,  and  the blocks are always freed in
1129       reverse order. A calling program might be able to  implement  optimized
1130       functions  that  perform  better  than  malloc()  and free(). PCRE runs
1131       noticeably more slowly when built in this way. This option affects only
1132       the pcre_exec() function; it is not relevant for pcre_dfa_exec().
1133
1134
1135LIMITING PCRE RESOURCE USAGE
1136
1137       Internally,  PCRE has a function called match(), which it calls repeat-
1138       edly  (sometimes  recursively)  when  matching  a  pattern   with   the
1139       pcre_exec()  function.  By controlling the maximum number of times this
1140       function may be called during a single matching operation, a limit  can
1141       be  placed  on  the resources used by a single call to pcre_exec(). The
1142       limit can be changed at run time, as described in the pcreapi  documen-
1143       tation.  The default is 10 million, but this can be changed by adding a
1144       setting such as
1145
1146         --with-match-limit=500000
1147
1148       to  the  configure  command.  This  setting  has  no  effect   on   the
1149       pcre_dfa_exec() matching function.
1150
1151       In  some  environments  it is desirable to limit the depth of recursive
1152       calls of match() more strictly than the total number of calls, in order
1153       to  restrict  the maximum amount of stack (or heap, if --disable-stack-
1154       for-recursion is specified) that is used. A second limit controls this;
1155       it  defaults  to  the  value  that is set for --with-match-limit, which
1156       imposes no additional constraints. However, you can set a  lower  limit
1157       by adding, for example,
1158
1159         --with-match-limit-recursion=10000
1160
1161       to  the  configure  command.  This  value can also be overridden at run
1162       time.
1163
1164
1165CREATING CHARACTER TABLES AT BUILD TIME
1166
1167       PCRE uses fixed tables for processing characters whose code values  are
1168       less  than 256. By default, PCRE is built with a set of tables that are
1169       distributed in the file pcre_chartables.c.dist. These  tables  are  for
1170       ASCII codes only. If you add
1171
1172         --enable-rebuild-chartables
1173
1174       to  the  configure  command, the distributed tables are no longer used.
1175       Instead, a program called dftables is compiled and  run.  This  outputs
1176       the source for new set of tables, created in the default locale of your
1177       C run-time system. (This method of replacing the tables does  not  work
1178       if  you are cross compiling, because dftables is run on the local host.
1179       If you need to create alternative tables when cross compiling, you will
1180       have to do so "by hand".)
1181
1182
1183USING EBCDIC CODE
1184
1185       PCRE  assumes  by  default that it will run in an environment where the
1186       character code is ASCII (or Unicode, which is  a  superset  of  ASCII).
1187       This  is  the  case for most computer operating systems. PCRE can, how-
1188       ever, be compiled to run in an EBCDIC environment by adding
1189
1190         --enable-ebcdic
1191
1192       to the configure command. This setting implies --enable-rebuild-charta-
1193       bles.  You  should  only  use  it if you know that you are in an EBCDIC
1194       environment (for example,  an  IBM  mainframe  operating  system).  The
1195       --enable-ebcdic option is incompatible with --enable-utf.
1196
1197       The EBCDIC character that corresponds to an ASCII LF is assumed to have
1198       the value 0x15 by default. However, in some EBCDIC  environments,  0x25
1199       is used. In such an environment you should use
1200
1201         --enable-ebcdic-nl25
1202
1203       as well as, or instead of, --enable-ebcdic. The EBCDIC character for CR
1204       has the same value as in ASCII, namely, 0x0d.  Whichever  of  0x15  and
1205       0x25 is not chosen as LF is made to correspond to the Unicode NEL char-
1206       acter (which, in Unicode, is 0x85).
1207
1208       The options that select newline behaviour, such as --enable-newline-is-
1209       cr, and equivalent run-time options, refer to these character values in
1210       an EBCDIC environment.
1211
1212
1213PCREGREP OPTIONS FOR COMPRESSED FILE SUPPORT
1214
1215       By default, pcregrep reads all files as plain text. You can build it so
1216       that it recognizes files whose names end in .gz or .bz2, and reads them
1217       with libz or libbz2, respectively, by adding one or both of
1218
1219         --enable-pcregrep-libz
1220         --enable-pcregrep-libbz2
1221
1222       to the configure command. These options naturally require that the rel-
1223       evant  libraries  are installed on your system. Configuration will fail
1224       if they are not.
1225
1226
1227PCREGREP BUFFER SIZE
1228
1229       pcregrep uses an internal buffer to hold a "window" on the file  it  is
1230       scanning, in order to be able to output "before" and "after" lines when
1231       it finds a match. The size of the buffer is controlled by  a  parameter
1232       whose default value is 20K. The buffer itself is three times this size,
1233       but because of the way it is used for holding "before" lines, the long-
1234       est  line  that  is guaranteed to be processable is the parameter size.
1235       You can change the default parameter value by adding, for example,
1236
1237         --with-pcregrep-bufsize=50K
1238
1239       to the configure command. The caller of pcregrep can, however, override
1240       this value by specifying a run-time option.
1241
1242
1243PCRETEST OPTION FOR LIBREADLINE SUPPORT
1244
1245       If you add
1246
1247         --enable-pcretest-libreadline
1248
1249       to  the  configure  command,  pcretest  is  linked with the libreadline
1250       library, and when its input is from a terminal, it reads it  using  the
1251       readline() function. This provides line-editing and history facilities.
1252       Note that libreadline is GPL-licensed, so if you distribute a binary of
1253       pcretest linked in this way, there may be licensing issues.
1254
1255       Setting  this  option  causes  the -lreadline option to be added to the
1256       pcretest build. In many operating environments with  a  sytem-installed
1257       libreadline this is sufficient. However, in some environments (e.g.  if
1258       an unmodified distribution version of readline is in use),  some  extra
1259       configuration  may  be necessary. The INSTALL file for libreadline says
1260       this:
1261
1262         "Readline uses the termcap functions, but does not link with the
1263         termcap or curses library itself, allowing applications which link
1264         with readline the to choose an appropriate library."
1265
1266       If your environment has not been set up so that an appropriate  library
1267       is automatically included, you may need to add something like
1268
1269         LIBS="-ncurses"
1270
1271       immediately before the configure command.
1272
1273
1274DEBUGGING WITH VALGRIND SUPPORT
1275
1276       By adding the
1277
1278         --enable-valgrind
1279
1280       option  to to the configure command, PCRE will use valgrind annotations
1281       to mark certain memory regions as  unaddressable.  This  allows  it  to
1282       detect invalid memory accesses, and is mostly useful for debugging PCRE
1283       itself.
1284
1285
1286CODE COVERAGE REPORTING
1287
1288       If your C compiler is gcc, you can build a version  of  PCRE  that  can
1289       generate a code coverage report for its test suite. To enable this, you
1290       must install lcov version 1.6 or above. Then specify
1291
1292         --enable-coverage
1293
1294       to the configure command and build PCRE in the usual way.
1295
1296       Note that using ccache (a caching C compiler) is incompatible with code
1297       coverage  reporting. If you have configured ccache to run automatically
1298       on your system, you must set the environment variable
1299
1300         CCACHE_DISABLE=1
1301
1302       before running make to build PCRE, so that ccache is not used.
1303
1304       When --enable-coverage is used,  the  following  addition  targets  are
1305       added to the Makefile:
1306
1307         make coverage
1308
1309       This  creates  a  fresh  coverage report for the PCRE test suite. It is
1310       equivalent to running "make coverage-reset", "make  coverage-baseline",
1311       "make check", and then "make coverage-report".
1312
1313         make coverage-reset
1314
1315       This zeroes the coverage counters, but does nothing else.
1316
1317         make coverage-baseline
1318
1319       This captures baseline coverage information.
1320
1321         make coverage-report
1322
1323       This creates the coverage report.
1324
1325         make coverage-clean-report
1326
1327       This  removes the generated coverage report without cleaning the cover-
1328       age data itself.
1329
1330         make coverage-clean-data
1331
1332       This removes the captured coverage data without removing  the  coverage
1333       files created at compile time (*.gcno).
1334
1335         make coverage-clean
1336
1337       This  cleans all coverage data including the generated coverage report.
1338       For more information about code coverage, see the gcov and  lcov  docu-
1339       mentation.
1340
1341
1342SEE ALSO
1343
1344       pcreapi(3), pcre16, pcre32, pcre_config(3).
1345
1346
1347AUTHOR
1348
1349       Philip Hazel
1350       University Computing Service
1351       Cambridge CB2 3QH, England.
1352
1353
1354REVISION
1355
1356       Last updated: 12 May 2013
1357       Copyright (c) 1997-2013 University of Cambridge.
1358------------------------------------------------------------------------------
1359
1360
1361PCREMATCHING(3)            Library Functions Manual            PCREMATCHING(3)
1362
1363
1364
1365NAME
1366       PCRE - Perl-compatible regular expressions
1367
1368PCRE MATCHING ALGORITHMS
1369
1370       This document describes the two different algorithms that are available
1371       in PCRE for matching a compiled regular expression against a given sub-
1372       ject  string.  The  "standard"  algorithm  is  the  one provided by the
1373       pcre_exec(), pcre16_exec() and pcre32_exec() functions. These  work  in
1374       the  same as as Perl's matching function, and provide a Perl-compatible
1375       matching  operation.   The  just-in-time  (JIT)  optimization  that  is
1376       described  in  the pcrejit documentation is compatible with these func-
1377       tions.
1378
1379       An  alternative  algorithm  is   provided   by   the   pcre_dfa_exec(),
1380       pcre16_dfa_exec()  and  pcre32_dfa_exec()  functions; they operate in a
1381       different way, and are not Perl-compatible. This alternative has advan-
1382       tages and disadvantages compared with the standard algorithm, and these
1383       are described below.
1384
1385       When there is only one possible way in which a given subject string can
1386       match  a pattern, the two algorithms give the same answer. A difference
1387       arises, however, when there are multiple possibilities. For example, if
1388       the pattern
1389
1390         ^<.*>
1391
1392       is matched against the string
1393
1394         <something> <something else> <something further>
1395
1396       there are three possible answers. The standard algorithm finds only one
1397       of them, whereas the alternative algorithm finds all three.
1398
1399
1400REGULAR EXPRESSIONS AS TREES
1401
1402       The set of strings that are matched by a regular expression can be rep-
1403       resented  as  a  tree structure. An unlimited repetition in the pattern
1404       makes the tree of infinite size, but it is still a tree.  Matching  the
1405       pattern  to a given subject string (from a given starting point) can be
1406       thought of as a search of the tree.  There are two  ways  to  search  a
1407       tree:  depth-first  and  breadth-first, and these correspond to the two
1408       matching algorithms provided by PCRE.
1409
1410
1411THE STANDARD MATCHING ALGORITHM
1412
1413       In the terminology of Jeffrey Friedl's book "Mastering Regular  Expres-
1414       sions",  the  standard  algorithm  is an "NFA algorithm". It conducts a
1415       depth-first search of the pattern tree. That is, it  proceeds  along  a
1416       single path through the tree, checking that the subject matches what is
1417       required. When there is a mismatch, the algorithm  tries  any  alterna-
1418       tives  at  the  current point, and if they all fail, it backs up to the
1419       previous branch point in the  tree,  and  tries  the  next  alternative
1420       branch  at  that  level.  This often involves backing up (moving to the
1421       left) in the subject string as well.  The  order  in  which  repetition
1422       branches  are  tried  is controlled by the greedy or ungreedy nature of
1423       the quantifier.
1424
1425       If a leaf node is reached, a matching string has  been  found,  and  at
1426       that  point the algorithm stops. Thus, if there is more than one possi-
1427       ble match, this algorithm returns the first one that it finds.  Whether
1428       this  is the shortest, the longest, or some intermediate length depends
1429       on the way the greedy and ungreedy repetition quantifiers are specified
1430       in the pattern.
1431
1432       Because  it  ends  up  with a single path through the tree, it is rela-
1433       tively straightforward for this algorithm to keep  track  of  the  sub-
1434       strings  that  are  matched  by portions of the pattern in parentheses.
1435       This provides support for capturing parentheses and back references.
1436
1437
1438THE ALTERNATIVE MATCHING ALGORITHM
1439
1440       This algorithm conducts a breadth-first search of  the  tree.  Starting
1441       from  the  first  matching  point  in the subject, it scans the subject
1442       string from left to right, once, character by character, and as it does
1443       this,  it remembers all the paths through the tree that represent valid
1444       matches. In Friedl's terminology, this is a kind  of  "DFA  algorithm",
1445       though  it is not implemented as a traditional finite state machine (it
1446       keeps multiple states active simultaneously).
1447
1448       Although the general principle of this matching algorithm  is  that  it
1449       scans  the subject string only once, without backtracking, there is one
1450       exception: when a lookaround assertion is encountered,  the  characters
1451       following  or  preceding  the  current  point  have to be independently
1452       inspected.
1453
1454       The scan continues until either the end of the subject is  reached,  or
1455       there  are  no more unterminated paths. At this point, terminated paths
1456       represent the different matching possibilities (if there are none,  the
1457       match  has  failed).   Thus,  if there is more than one possible match,
1458       this algorithm finds all of them, and in particular, it finds the long-
1459       est.  The  matches are returned in decreasing order of length. There is
1460       an option to stop the algorithm after the first match (which is  neces-
1461       sarily the shortest) is found.
1462
1463       Note that all the matches that are found start at the same point in the
1464       subject. If the pattern
1465
1466         cat(er(pillar)?)?
1467
1468       is matched against the string "the caterpillar catchment",  the  result
1469       will  be the three strings "caterpillar", "cater", and "cat" that start
1470       at the fifth character of the subject. The algorithm does not automati-
1471       cally move on to find matches that start at later positions.
1472
1473       PCRE's  "auto-possessification" optimization usually applies to charac-
1474       ter repeats at the end of a pattern (as well as internally). For  exam-
1475       ple, the pattern "a\d+" is compiled as if it were "a\d++" because there
1476       is no point even considering the possibility of backtracking  into  the
1477       repeated  digits.  For  DFA matching, this means that only one possible
1478       match is found. If you really do want multiple matches in  such  cases,
1479       either use an ungreedy repeat ("a\d+?") or set the PCRE_NO_AUTO_POSSESS
1480       option when compiling.
1481
1482       There are a number of features of PCRE regular expressions that are not
1483       supported by the alternative matching algorithm. They are as follows:
1484
1485       1.  Because  the  algorithm  finds  all possible matches, the greedy or
1486       ungreedy nature of repetition quantifiers is not relevant.  Greedy  and
1487       ungreedy quantifiers are treated in exactly the same way. However, pos-
1488       sessive quantifiers can make a difference when what follows could  also
1489       match what is quantified, for example in a pattern like this:
1490
1491         ^a++\w!
1492
1493       This  pattern matches "aaab!" but not "aaa!", which would be matched by
1494       a non-possessive quantifier. Similarly, if an atomic group is  present,
1495       it  is matched as if it were a standalone pattern at the current point,
1496       and the longest match is then "locked in" for the rest of  the  overall
1497       pattern.
1498
1499       2. When dealing with multiple paths through the tree simultaneously, it
1500       is not straightforward to keep track of  captured  substrings  for  the
1501       different  matching  possibilities,  and  PCRE's implementation of this
1502       algorithm does not attempt to do this. This means that no captured sub-
1503       strings are available.
1504
1505       3.  Because no substrings are captured, back references within the pat-
1506       tern are not supported, and cause errors if encountered.
1507
1508       4. For the same reason, conditional expressions that use  a  backrefer-
1509       ence  as  the  condition or test for a specific group recursion are not
1510       supported.
1511
1512       5. Because many paths through the tree may be  active,  the  \K  escape
1513       sequence, which resets the start of the match when encountered (but may
1514       be on some paths and not on others), is not  supported.  It  causes  an
1515       error if encountered.
1516
1517       6.  Callouts  are  supported, but the value of the capture_top field is
1518       always 1, and the value of the capture_last field is always -1.
1519
1520       7. The \C escape sequence, which (in  the  standard  algorithm)  always
1521       matches  a  single data unit, even in UTF-8, UTF-16 or UTF-32 modes, is
1522       not supported in these modes, because the alternative  algorithm  moves
1523       through the subject string one character (not data unit) at a time, for
1524       all active paths through the tree.
1525
1526       8. Except for (*FAIL), the backtracking control verbs such as  (*PRUNE)
1527       are  not  supported.  (*FAIL)  is supported, and behaves like a failing
1528       negative assertion.
1529
1530
1531ADVANTAGES OF THE ALTERNATIVE ALGORITHM
1532
1533       Using the alternative matching algorithm provides the following  advan-
1534       tages:
1535
1536       1. All possible matches (at a single point in the subject) are automat-
1537       ically found, and in particular, the longest match is  found.  To  find
1538       more than one match using the standard algorithm, you have to do kludgy
1539       things with callouts.
1540
1541       2. Because the alternative algorithm  scans  the  subject  string  just
1542       once, and never needs to backtrack (except for lookbehinds), it is pos-
1543       sible to pass very long subject strings to  the  matching  function  in
1544       several pieces, checking for partial matching each time. Although it is
1545       possible to do multi-segment matching using the standard  algorithm  by
1546       retaining  partially  matched  substrings,  it is more complicated. The
1547       pcrepartial documentation gives details of partial  matching  and  dis-
1548       cusses multi-segment matching.
1549
1550
1551DISADVANTAGES OF THE ALTERNATIVE ALGORITHM
1552
1553       The alternative algorithm suffers from a number of disadvantages:
1554
1555       1.  It  is  substantially  slower  than the standard algorithm. This is
1556       partly because it has to search for all possible matches, but  is  also
1557       because it is less susceptible to optimization.
1558
1559       2. Capturing parentheses and back references are not supported.
1560
1561       3. Although atomic groups are supported, their use does not provide the
1562       performance advantage that it does for the standard algorithm.
1563
1564
1565AUTHOR
1566
1567       Philip Hazel
1568       University Computing Service
1569       Cambridge CB2 3QH, England.
1570
1571
1572REVISION
1573
1574       Last updated: 12 November 2013
1575       Copyright (c) 1997-2012 University of Cambridge.
1576------------------------------------------------------------------------------
1577
1578
1579PCREAPI(3)                 Library Functions Manual                 PCREAPI(3)
1580
1581
1582
1583NAME
1584       PCRE - Perl-compatible regular expressions
1585
1586       #include <pcre.h>
1587
1588
1589PCRE NATIVE API BASIC FUNCTIONS
1590
1591       pcre *pcre_compile(const char *pattern, int options,
1592            const char **errptr, int *erroffset,
1593            const unsigned char *tableptr);
1594
1595       pcre *pcre_compile2(const char *pattern, int options,
1596            int *errorcodeptr,
1597            const char **errptr, int *erroffset,
1598            const unsigned char *tableptr);
1599
1600       pcre_extra *pcre_study(const pcre *code, int options,
1601            const char **errptr);
1602
1603       void pcre_free_study(pcre_extra *extra);
1604
1605       int pcre_exec(const pcre *code, const pcre_extra *extra,
1606            const char *subject, int length, int startoffset,
1607            int options, int *ovector, int ovecsize);
1608
1609       int pcre_dfa_exec(const pcre *code, const pcre_extra *extra,
1610            const char *subject, int length, int startoffset,
1611            int options, int *ovector, int ovecsize,
1612            int *workspace, int wscount);
1613
1614
1615PCRE NATIVE API STRING EXTRACTION FUNCTIONS
1616
1617       int pcre_copy_named_substring(const pcre *code,
1618            const char *subject, int *ovector,
1619            int stringcount, const char *stringname,
1620            char *buffer, int buffersize);
1621
1622       int pcre_copy_substring(const char *subject, int *ovector,
1623            int stringcount, int stringnumber, char *buffer,
1624            int buffersize);
1625
1626       int pcre_get_named_substring(const pcre *code,
1627            const char *subject, int *ovector,
1628            int stringcount, const char *stringname,
1629            const char **stringptr);
1630
1631       int pcre_get_stringnumber(const pcre *code,
1632            const char *name);
1633
1634       int pcre_get_stringtable_entries(const pcre *code,
1635            const char *name, char **first, char **last);
1636
1637       int pcre_get_substring(const char *subject, int *ovector,
1638            int stringcount, int stringnumber,
1639            const char **stringptr);
1640
1641       int pcre_get_substring_list(const char *subject,
1642            int *ovector, int stringcount, const char ***listptr);
1643
1644       void pcre_free_substring(const char *stringptr);
1645
1646       void pcre_free_substring_list(const char **stringptr);
1647
1648
1649PCRE NATIVE API AUXILIARY FUNCTIONS
1650
1651       int pcre_jit_exec(const pcre *code, const pcre_extra *extra,
1652            const char *subject, int length, int startoffset,
1653            int options, int *ovector, int ovecsize,
1654            pcre_jit_stack *jstack);
1655
1656       pcre_jit_stack *pcre_jit_stack_alloc(int startsize, int maxsize);
1657
1658       void pcre_jit_stack_free(pcre_jit_stack *stack);
1659
1660       void pcre_assign_jit_stack(pcre_extra *extra,
1661            pcre_jit_callback callback, void *data);
1662
1663       const unsigned char *pcre_maketables(void);
1664
1665       int pcre_fullinfo(const pcre *code, const pcre_extra *extra,
1666            int what, void *where);
1667
1668       int pcre_refcount(pcre *code, int adjust);
1669
1670       int pcre_config(int what, void *where);
1671
1672       const char *pcre_version(void);
1673
1674       int pcre_pattern_to_host_byte_order(pcre *code,
1675            pcre_extra *extra, const unsigned char *tables);
1676
1677
1678PCRE NATIVE API INDIRECTED FUNCTIONS
1679
1680       void *(*pcre_malloc)(size_t);
1681
1682       void (*pcre_free)(void *);
1683
1684       void *(*pcre_stack_malloc)(size_t);
1685
1686       void (*pcre_stack_free)(void *);
1687
1688       int (*pcre_callout)(pcre_callout_block *);
1689
1690       int (*pcre_stack_guard)(void);
1691
1692
1693PCRE 8-BIT, 16-BIT, AND 32-BIT LIBRARIES
1694
1695       As  well  as  support  for  8-bit character strings, PCRE also supports
1696       16-bit strings (from release 8.30) and  32-bit  strings  (from  release
1697       8.32),  by means of two additional libraries. They can be built as well
1698       as, or instead of, the 8-bit library. To avoid too  much  complication,
1699       this  document describes the 8-bit versions of the functions, with only
1700       occasional references to the 16-bit and 32-bit libraries.
1701
1702       The 16-bit and 32-bit functions operate in the same way as their  8-bit
1703       counterparts;  they  just  use different data types for their arguments
1704       and results, and their names start with pcre16_ or pcre32_  instead  of
1705       pcre_.  For  every  option  that  has  UTF8  in  its name (for example,
1706       PCRE_UTF8), there are corresponding 16-bit and 32-bit names  with  UTF8
1707       replaced by UTF16 or UTF32, respectively. This facility is in fact just
1708       cosmetic; the 16-bit and 32-bit option names define the same  bit  val-
1709       ues.
1710
1711       References to bytes and UTF-8 in this document should be read as refer-
1712       ences to 16-bit data units and UTF-16 when using the 16-bit library, or
1713       32-bit  data  units  and  UTF-32  when using the 32-bit library, unless
1714       specified otherwise.  More details of the specific differences for  the
1715       16-bit and 32-bit libraries are given in the pcre16 and pcre32 pages.
1716
1717
1718PCRE API OVERVIEW
1719
1720       PCRE has its own native API, which is described in this document. There
1721       are also some wrapper functions (for the 8-bit library only) that  cor-
1722       respond  to  the  POSIX  regular  expression  API, but they do not give
1723       access to all the functionality. They are described  in  the  pcreposix
1724       documentation.  Both  of these APIs define a set of C function calls. A
1725       C++ wrapper (again for the 8-bit library only) is also distributed with
1726       PCRE. It is documented in the pcrecpp page.
1727
1728       The  native  API  C  function prototypes are defined in the header file
1729       pcre.h, and on Unix-like systems the (8-bit) library itself  is  called
1730       libpcre.  It  can  normally be accessed by adding -lpcre to the command
1731       for linking an application that uses PCRE. The header file defines  the
1732       macros PCRE_MAJOR and PCRE_MINOR to contain the major and minor release
1733       numbers for the library. Applications can use these to include  support
1734       for different releases of PCRE.
1735
1736       In a Windows environment, if you want to statically link an application
1737       program against a non-dll pcre.a  file,  you  must  define  PCRE_STATIC
1738       before  including  pcre.h or pcrecpp.h, because otherwise the pcre_mal-
1739       loc()   and   pcre_free()   exported   functions   will   be   declared
1740       __declspec(dllimport), with unwanted results.
1741
1742       The   functions   pcre_compile(),  pcre_compile2(),  pcre_study(),  and
1743       pcre_exec() are used for compiling and matching regular expressions  in
1744       a  Perl-compatible  manner. A sample program that demonstrates the sim-
1745       plest way of using them is provided in the file  called  pcredemo.c  in
1746       the PCRE source distribution. A listing of this program is given in the
1747       pcredemo documentation, and the pcresample documentation describes  how
1748       to compile and run it.
1749
1750       Just-in-time  compiler  support is an optional feature of PCRE that can
1751       be built in appropriate hardware environments. It greatly speeds up the
1752       matching  performance  of  many  patterns.  Simple  programs can easily
1753       request that it be used if available, by  setting  an  option  that  is
1754       ignored  when  it is not relevant. More complicated programs might need
1755       to    make    use    of    the    functions     pcre_jit_stack_alloc(),
1756       pcre_jit_stack_free(),  and pcre_assign_jit_stack() in order to control
1757       the JIT code's memory usage.
1758
1759       From release 8.32 there is also a direct interface for  JIT  execution,
1760       which  gives  improved performance. The JIT-specific functions are dis-
1761       cussed in the pcrejit documentation.
1762
1763       A second matching function, pcre_dfa_exec(), which is not Perl-compati-
1764       ble,  is  also provided. This uses a different algorithm for the match-
1765       ing. The alternative algorithm finds all possible matches (at  a  given
1766       point  in  the  subject), and scans the subject just once (unless there
1767       are lookbehind assertions). However, this  algorithm  does  not  return
1768       captured  substrings.  A description of the two matching algorithms and
1769       their advantages and disadvantages is given in the  pcrematching  docu-
1770       mentation.
1771
1772       In  addition  to  the  main compiling and matching functions, there are
1773       convenience functions for extracting captured substrings from a subject
1774       string that is matched by pcre_exec(). They are:
1775
1776         pcre_copy_substring()
1777         pcre_copy_named_substring()
1778         pcre_get_substring()
1779         pcre_get_named_substring()
1780         pcre_get_substring_list()
1781         pcre_get_stringnumber()
1782         pcre_get_stringtable_entries()
1783
1784       pcre_free_substring() and pcre_free_substring_list() are also provided,
1785       to free the memory used for extracted strings.
1786
1787       The function pcre_maketables() is used to  build  a  set  of  character
1788       tables   in   the   current   locale  for  passing  to  pcre_compile(),
1789       pcre_exec(), or pcre_dfa_exec(). This is an optional facility  that  is
1790       provided  for  specialist  use.  Most  commonly,  no special tables are
1791       passed, in which case internal tables that are generated when  PCRE  is
1792       built are used.
1793
1794       The  function  pcre_fullinfo()  is used to find out information about a
1795       compiled pattern. The function pcre_version() returns a  pointer  to  a
1796       string containing the version of PCRE and its date of release.
1797
1798       The  function  pcre_refcount()  maintains  a  reference count in a data
1799       block containing a compiled pattern. This is provided for  the  benefit
1800       of object-oriented applications.
1801
1802       The  global  variables  pcre_malloc and pcre_free initially contain the
1803       entry points of the standard malloc()  and  free()  functions,  respec-
1804       tively. PCRE calls the memory management functions via these variables,
1805       so a calling program can replace them if it  wishes  to  intercept  the
1806       calls. This should be done before calling any PCRE functions.
1807
1808       The  global  variables  pcre_stack_malloc  and pcre_stack_free are also
1809       indirections to memory management functions.  These  special  functions
1810       are  used  only  when  PCRE is compiled to use the heap for remembering
1811       data, instead of recursive function calls, when running the pcre_exec()
1812       function.  See  the  pcrebuild  documentation  for details of how to do
1813       this. It is a non-standard way of building PCRE, for  use  in  environ-
1814       ments  that  have  limited stacks. Because of the greater use of memory
1815       management, it runs more slowly. Separate  functions  are  provided  so
1816       that  special-purpose  external  code  can  be used for this case. When
1817       used, these functions are always called in a  stack-like  manner  (last
1818       obtained,  first freed), and always for memory blocks of the same size.
1819       There is a discussion about PCRE's stack usage in the  pcrestack  docu-
1820       mentation.
1821
1822       The global variable pcre_callout initially contains NULL. It can be set
1823       by the caller to a "callout" function, which PCRE  will  then  call  at
1824       specified  points during a matching operation. Details are given in the
1825       pcrecallout documentation.
1826
1827       The global variable pcre_stack_guard initially contains NULL. It can be
1828       set  by  the  caller  to  a function that is called by PCRE whenever it
1829       starts to compile a parenthesized part of a pattern.  When  parentheses
1830       are nested, PCRE uses recursive function calls, which use up the system
1831       stack. This function is provided so that applications  with  restricted
1832       stacks  can  force a compilation error if the stack runs out. The func-
1833       tion should return zero if all is well, or non-zero to force an error.
1834
1835
1836NEWLINES
1837
1838       PCRE supports five different conventions for indicating line breaks  in
1839       strings:  a  single  CR (carriage return) character, a single LF (line-
1840       feed) character, the two-character sequence CRLF, any of the three pre-
1841       ceding,  or any Unicode newline sequence. The Unicode newline sequences
1842       are the three just mentioned, plus the single characters  VT  (vertical
1843       tab, U+000B), FF (form feed, U+000C), NEL (next line, U+0085), LS (line
1844       separator, U+2028), and PS (paragraph separator, U+2029).
1845
1846       Each of the first three conventions is used by at least  one  operating
1847       system  as its standard newline sequence. When PCRE is built, a default
1848       can be specified.  The default default is LF, which is the  Unix  stan-
1849       dard.  When  PCRE  is run, the default can be overridden, either when a
1850       pattern is compiled, or when it is matched.
1851
1852       At compile time, the newline convention can be specified by the options
1853       argument  of  pcre_compile(), or it can be specified by special text at
1854       the start of the pattern itself; this overrides any other settings. See
1855       the pcrepattern page for details of the special character sequences.
1856
1857       In the PCRE documentation the word "newline" is used to mean "the char-
1858       acter or pair of characters that indicate a line break". The choice  of
1859       newline  convention  affects  the  handling of the dot, circumflex, and
1860       dollar metacharacters, the handling of #-comments in /x mode, and, when
1861       CRLF  is a recognized line ending sequence, the match position advance-
1862       ment for a non-anchored pattern. There is more detail about this in the
1863       section on pcre_exec() options below.
1864
1865       The  choice of newline convention does not affect the interpretation of
1866       the \n or \r escape sequences, nor does  it  affect  what  \R  matches,
1867       which is controlled in a similar way, but by separate options.
1868
1869
1870MULTITHREADING
1871
1872       The  PCRE  functions  can be used in multi-threading applications, with
1873       the  proviso  that  the  memory  management  functions  pointed  to  by
1874       pcre_malloc, pcre_free, pcre_stack_malloc, and pcre_stack_free, and the
1875       callout and stack-checking functions pointed  to  by  pcre_callout  and
1876       pcre_stack_guard, are shared by all threads.
1877
1878       The  compiled form of a regular expression is not altered during match-
1879       ing, so the same compiled pattern can safely be used by several threads
1880       at once.
1881
1882       If  the just-in-time optimization feature is being used, it needs sepa-
1883       rate memory stack areas for each thread. See the pcrejit  documentation
1884       for more details.
1885
1886
1887SAVING PRECOMPILED PATTERNS FOR LATER USE
1888
1889       The compiled form of a regular expression can be saved and re-used at a
1890       later time, possibly by a different program, and even on a  host  other
1891       than  the  one  on  which  it  was  compiled.  Details are given in the
1892       pcreprecompile documentation,  which  includes  a  description  of  the
1893       pcre_pattern_to_host_byte_order()  function. However, compiling a regu-
1894       lar expression with one version of PCRE for use with a  different  ver-
1895       sion is not guaranteed to work and may cause crashes.
1896
1897
1898CHECKING BUILD-TIME OPTIONS
1899
1900       int pcre_config(int what, void *where);
1901
1902       The  function pcre_config() makes it possible for a PCRE client to dis-
1903       cover which optional features have been compiled into the PCRE library.
1904       The  pcrebuild documentation has more details about these optional fea-
1905       tures.
1906
1907       The first argument for pcre_config() is an  integer,  specifying  which
1908       information is required; the second argument is a pointer to a variable
1909       into which the information is placed. The returned  value  is  zero  on
1910       success,  or  the negative error code PCRE_ERROR_BADOPTION if the value
1911       in the first argument is not recognized. The following  information  is
1912       available:
1913
1914         PCRE_CONFIG_UTF8
1915
1916       The  output is an integer that is set to one if UTF-8 support is avail-
1917       able; otherwise it is set to zero. This value should normally be  given
1918       to the 8-bit version of this function, pcre_config(). If it is given to
1919       the  16-bit  or  32-bit  version  of  this  function,  the  result   is
1920       PCRE_ERROR_BADOPTION.
1921
1922         PCRE_CONFIG_UTF16
1923
1924       The output is an integer that is set to one if UTF-16 support is avail-
1925       able; otherwise it is set to zero. This value should normally be  given
1926       to the 16-bit version of this function, pcre16_config(). If it is given
1927       to the 8-bit  or  32-bit  version  of  this  function,  the  result  is
1928       PCRE_ERROR_BADOPTION.
1929
1930         PCRE_CONFIG_UTF32
1931
1932       The output is an integer that is set to one if UTF-32 support is avail-
1933       able; otherwise it is set to zero. This value should normally be  given
1934       to the 32-bit version of this function, pcre32_config(). If it is given
1935       to the 8-bit  or  16-bit  version  of  this  function,  the  result  is
1936       PCRE_ERROR_BADOPTION.
1937
1938         PCRE_CONFIG_UNICODE_PROPERTIES
1939
1940       The  output  is  an  integer  that is set to one if support for Unicode
1941       character properties is available; otherwise it is set to zero.
1942
1943         PCRE_CONFIG_JIT
1944
1945       The output is an integer that is set to one if support for just-in-time
1946       compiling is available; otherwise it is set to zero.
1947
1948         PCRE_CONFIG_JITTARGET
1949
1950       The  output is a pointer to a zero-terminated "const char *" string. If
1951       JIT support is available, the string contains the name of the architec-
1952       ture  for  which the JIT compiler is configured, for example "x86 32bit
1953       (little endian + unaligned)". If JIT  support  is  not  available,  the
1954       result is NULL.
1955
1956         PCRE_CONFIG_NEWLINE
1957
1958       The  output  is  an integer whose value specifies the default character
1959       sequence that is recognized as meaning "newline". The values  that  are
1960       supported in ASCII/Unicode environments are: 10 for LF, 13 for CR, 3338
1961       for CRLF, -2 for ANYCRLF, and -1 for ANY. In EBCDIC  environments,  CR,
1962       ANYCRLF,  and  ANY  yield the same values. However, the value for LF is
1963       normally 21, though some EBCDIC environments use 37. The  corresponding
1964       values  for  CRLF are 3349 and 3365. The default should normally corre-
1965       spond to the standard sequence for your operating system.
1966
1967         PCRE_CONFIG_BSR
1968
1969       The output is an integer whose value indicates what character sequences
1970       the  \R  escape sequence matches by default. A value of 0 means that \R
1971       matches any Unicode line ending sequence; a value of 1  means  that  \R
1972       matches only CR, LF, or CRLF. The default can be overridden when a pat-
1973       tern is compiled or matched.
1974
1975         PCRE_CONFIG_LINK_SIZE
1976
1977       The output is an integer that contains the number  of  bytes  used  for
1978       internal  linkage  in  compiled  regular  expressions.  For  the  8-bit
1979       library, the value can be 2, 3, or 4. For the 16-bit library, the value
1980       is  either  2  or  4  and  is  still  a number of bytes. For the 32-bit
1981       library, the value is either 2 or 4 and is still a number of bytes. The
1982       default value of 2 is sufficient for all but the most massive patterns,
1983       since it allows the compiled pattern to be up to 64K  in  size.  Larger
1984       values  allow larger regular expressions to be compiled, at the expense
1985       of slower matching.
1986
1987         PCRE_CONFIG_POSIX_MALLOC_THRESHOLD
1988
1989       The output is an integer that contains the threshold  above  which  the
1990       POSIX  interface  uses malloc() for output vectors. Further details are
1991       given in the pcreposix documentation.
1992
1993         PCRE_CONFIG_PARENS_LIMIT
1994
1995       The output is a long integer that gives the maximum depth of nesting of
1996       parentheses  (of  any  kind) in a pattern. This limit is imposed to cap
1997       the amount of system stack used when a pattern is compiled. It is spec-
1998       ified  when PCRE is built; the default is 250. This limit does not take
1999       into account the stack that may already be used by the calling applica-
2000       tion.  For  finer  control  over compilation stack usage, you can set a
2001       pointer to an external checking function in pcre_stack_guard.
2002
2003         PCRE_CONFIG_MATCH_LIMIT
2004
2005       The output is a long integer that gives the default limit for the  num-
2006       ber  of  internal  matching  function calls in a pcre_exec() execution.
2007       Further details are given with pcre_exec() below.
2008
2009         PCRE_CONFIG_MATCH_LIMIT_RECURSION
2010
2011       The output is a long integer that gives the default limit for the depth
2012       of   recursion  when  calling  the  internal  matching  function  in  a
2013       pcre_exec() execution.  Further  details  are  given  with  pcre_exec()
2014       below.
2015
2016         PCRE_CONFIG_STACKRECURSE
2017
2018       The  output is an integer that is set to one if internal recursion when
2019       running pcre_exec() is implemented by recursive function calls that use
2020       the  stack  to remember their state. This is the usual way that PCRE is
2021       compiled. The output is zero if PCRE was compiled to use blocks of data
2022       on  the  heap  instead  of  recursive  function  calls.  In  this case,
2023       pcre_stack_malloc and  pcre_stack_free  are  called  to  manage  memory
2024       blocks on the heap, thus avoiding the use of the stack.
2025
2026
2027COMPILING A PATTERN
2028
2029       pcre *pcre_compile(const char *pattern, int options,
2030            const char **errptr, int *erroffset,
2031            const unsigned char *tableptr);
2032
2033       pcre *pcre_compile2(const char *pattern, int options,
2034            int *errorcodeptr,
2035            const char **errptr, int *erroffset,
2036            const unsigned char *tableptr);
2037
2038       Either of the functions pcre_compile() or pcre_compile2() can be called
2039       to compile a pattern into an internal form. The only difference between
2040       the  two interfaces is that pcre_compile2() has an additional argument,
2041       errorcodeptr, via which a numerical error  code  can  be  returned.  To
2042       avoid  too  much repetition, we refer just to pcre_compile() below, but
2043       the information applies equally to pcre_compile2().
2044
2045       The pattern is a C string terminated by a binary zero, and is passed in
2046       the  pattern  argument.  A  pointer to a single block of memory that is
2047       obtained via pcre_malloc is returned. This contains the  compiled  code
2048       and related data. The pcre type is defined for the returned block; this
2049       is a typedef for a structure whose contents are not externally defined.
2050       It is up to the caller to free the memory (via pcre_free) when it is no
2051       longer required.
2052
2053       Although the compiled code of a PCRE regex is relocatable, that is,  it
2054       does not depend on memory location, the complete pcre data block is not
2055       fully relocatable, because it may contain a copy of the tableptr  argu-
2056       ment, which is an address (see below).
2057
2058       The options argument contains various bit settings that affect the com-
2059       pilation. It should be zero if no options are required.  The  available
2060       options  are  described  below. Some of them (in particular, those that
2061       are compatible with Perl, but some others as well) can also be set  and
2062       unset  from  within  the  pattern  (see the detailed description in the
2063       pcrepattern documentation). For those options that can be different  in
2064       different  parts  of  the pattern, the contents of the options argument
2065       specifies their settings at the start of compilation and execution. The
2066       PCRE_ANCHORED,  PCRE_BSR_xxx, PCRE_NEWLINE_xxx, PCRE_NO_UTF8_CHECK, and
2067       PCRE_NO_START_OPTIMIZE options can be set at the time  of  matching  as
2068       well as at compile time.
2069
2070       If errptr is NULL, pcre_compile() returns NULL immediately.  Otherwise,
2071       if compilation of a pattern fails,  pcre_compile()  returns  NULL,  and
2072       sets the variable pointed to by errptr to point to a textual error mes-
2073       sage. This is a static string that is part of the library. You must not
2074       try  to  free it. Normally, the offset from the start of the pattern to
2075       the data unit that was being processed when the error was discovered is
2076       placed  in the variable pointed to by erroffset, which must not be NULL
2077       (if it is, an immediate error is given). However, for an invalid  UTF-8
2078       or  UTF-16  string,  the  offset  is that of the first data unit of the
2079       failing character.
2080
2081       Some errors are not detected until the whole pattern has been  scanned;
2082       in  these  cases,  the offset passed back is the length of the pattern.
2083       Note that the offset is in data units, not characters, even  in  a  UTF
2084       mode. It may sometimes point into the middle of a UTF-8 or UTF-16 char-
2085       acter.
2086
2087       If pcre_compile2() is used instead of pcre_compile(),  and  the  error-
2088       codeptr  argument is not NULL, a non-zero error code number is returned
2089       via this argument in the event of an error. This is in addition to  the
2090       textual error message. Error codes and messages are listed below.
2091
2092       If  the  final  argument, tableptr, is NULL, PCRE uses a default set of
2093       character tables that are  built  when  PCRE  is  compiled,  using  the
2094       default  C  locale.  Otherwise, tableptr must be an address that is the
2095       result of a call to pcre_maketables(). This value is  stored  with  the
2096       compiled  pattern,  and  used  again by pcre_exec() and pcre_dfa_exec()
2097       when the pattern is matched. For more discussion, see  the  section  on
2098       locale support below.
2099
2100       This  code  fragment  shows a typical straightforward call to pcre_com-
2101       pile():
2102
2103         pcre *re;
2104         const char *error;
2105         int erroffset;
2106         re = pcre_compile(
2107           "^A.*Z",          /* the pattern */
2108           0,                /* default options */
2109           &error,           /* for error message */
2110           &erroffset,       /* for error offset */
2111           NULL);            /* use default character tables */
2112
2113       The following names for option bits are defined in  the  pcre.h  header
2114       file:
2115
2116         PCRE_ANCHORED
2117
2118       If this bit is set, the pattern is forced to be "anchored", that is, it
2119       is constrained to match only at the first matching point in the  string
2120       that  is being searched (the "subject string"). This effect can also be
2121       achieved by appropriate constructs in the pattern itself, which is  the
2122       only way to do it in Perl.
2123
2124         PCRE_AUTO_CALLOUT
2125
2126       If this bit is set, pcre_compile() automatically inserts callout items,
2127       all with number 255, before each pattern item. For  discussion  of  the
2128       callout facility, see the pcrecallout documentation.
2129
2130         PCRE_BSR_ANYCRLF
2131         PCRE_BSR_UNICODE
2132
2133       These options (which are mutually exclusive) control what the \R escape
2134       sequence matches. The choice is either to match only CR, LF,  or  CRLF,
2135       or to match any Unicode newline sequence. The default is specified when
2136       PCRE is built. It can be overridden from within the pattern, or by set-
2137       ting an option when a compiled pattern is matched.
2138
2139         PCRE_CASELESS
2140
2141       If  this  bit is set, letters in the pattern match both upper and lower
2142       case letters. It is equivalent to Perl's  /i  option,  and  it  can  be
2143       changed  within a pattern by a (?i) option setting. In UTF-8 mode, PCRE
2144       always understands the concept of case for characters whose values  are
2145       less  than 128, so caseless matching is always possible. For characters
2146       with higher values, the concept of case is supported if  PCRE  is  com-
2147       piled  with Unicode property support, but not otherwise. If you want to
2148       use caseless matching for characters 128 and  above,  you  must  ensure
2149       that  PCRE  is  compiled  with Unicode property support as well as with
2150       UTF-8 support.
2151
2152         PCRE_DOLLAR_ENDONLY
2153
2154       If this bit is set, a dollar metacharacter in the pattern matches  only
2155       at  the  end  of the subject string. Without this option, a dollar also
2156       matches immediately before a newline at the end of the string (but  not
2157       before  any  other newlines). The PCRE_DOLLAR_ENDONLY option is ignored
2158       if PCRE_MULTILINE is set.  There is no equivalent  to  this  option  in
2159       Perl, and no way to set it within a pattern.
2160
2161         PCRE_DOTALL
2162
2163       If  this bit is set, a dot metacharacter in the pattern matches a char-
2164       acter of any value, including one that indicates a newline. However, it
2165       only  ever  matches  one character, even if newlines are coded as CRLF.
2166       Without this option, a dot does not match when the current position  is
2167       at a newline. This option is equivalent to Perl's /s option, and it can
2168       be changed within a pattern by a (?s) option setting. A negative  class
2169       such as [^a] always matches newline characters, independent of the set-
2170       ting of this option.
2171
2172         PCRE_DUPNAMES
2173
2174       If this bit is set, names used to identify capturing  subpatterns  need
2175       not be unique. This can be helpful for certain types of pattern when it
2176       is known that only one instance of the named  subpattern  can  ever  be
2177       matched.  There  are  more details of named subpatterns below; see also
2178       the pcrepattern documentation.
2179
2180         PCRE_EXTENDED
2181
2182       If this bit is set, most white space  characters  in  the  pattern  are
2183       totally  ignored  except when escaped or inside a character class. How-
2184       ever, white space is not allowed within  sequences  such  as  (?>  that
2185       introduce  various  parenthesized  subpatterns,  nor within a numerical
2186       quantifier such as {1,3}.  However, ignorable white space is  permitted
2187       between an item and a following quantifier and between a quantifier and
2188       a following + that indicates possessiveness.
2189
2190       White space did not used to include the VT character (code 11), because
2191       Perl did not treat this character as white space. However, Perl changed
2192       at release 5.18, so PCRE followed  at  release  8.34,  and  VT  is  now
2193       treated as white space.
2194
2195       PCRE_EXTENDED  also  causes characters between an unescaped # outside a
2196       character class  and  the  next  newline,  inclusive,  to  be  ignored.
2197       PCRE_EXTENDED  is equivalent to Perl's /x option, and it can be changed
2198       within a pattern by a (?x) option setting.
2199
2200       Which characters are interpreted  as  newlines  is  controlled  by  the
2201       options  passed to pcre_compile() or by a special sequence at the start
2202       of the pattern, as described in the section entitled  "Newline  conven-
2203       tions" in the pcrepattern documentation. Note that the end of this type
2204       of comment is  a  literal  newline  sequence  in  the  pattern;  escape
2205       sequences that happen to represent a newline do not count.
2206
2207       This  option  makes  it possible to include comments inside complicated
2208       patterns.  Note, however, that this applies only  to  data  characters.
2209       White  space  characters  may  never  appear  within  special character
2210       sequences in a pattern, for example within the sequence (?( that intro-
2211       duces a conditional subpattern.
2212
2213         PCRE_EXTRA
2214
2215       This  option  was invented in order to turn on additional functionality
2216       of PCRE that is incompatible with Perl, but it  is  currently  of  very
2217       little  use. When set, any backslash in a pattern that is followed by a
2218       letter that has no special meaning  causes  an  error,  thus  reserving
2219       these  combinations  for  future  expansion.  By default, as in Perl, a
2220       backslash followed by a letter with no special meaning is treated as  a
2221       literal. (Perl can, however, be persuaded to give an error for this, by
2222       running it with the -w option.) There are at present no other  features
2223       controlled  by this option. It can also be set by a (?X) option setting
2224       within a pattern.
2225
2226         PCRE_FIRSTLINE
2227
2228       If this option is set, an  unanchored  pattern  is  required  to  match
2229       before  or  at  the  first  newline  in  the subject string, though the
2230       matched text may continue over the newline.
2231
2232         PCRE_JAVASCRIPT_COMPAT
2233
2234       If this option is set, PCRE's behaviour is changed in some ways so that
2235       it  is  compatible with JavaScript rather than Perl. The changes are as
2236       follows:
2237
2238       (1) A lone closing square bracket in a pattern  causes  a  compile-time
2239       error,  because this is illegal in JavaScript (by default it is treated
2240       as a data character). Thus, the pattern AB]CD becomes illegal when this
2241       option is set.
2242
2243       (2)  At run time, a back reference to an unset subpattern group matches
2244       an empty string (by default this causes the current  matching  alterna-
2245       tive  to  fail). A pattern such as (\1)(a) succeeds when this option is
2246       set (assuming it can find an "a" in the subject), whereas it  fails  by
2247       default, for Perl compatibility.
2248
2249       (3) \U matches an upper case "U" character; by default \U causes a com-
2250       pile time error (Perl uses \U to upper case subsequent characters).
2251
2252       (4) \u matches a lower case "u" character unless it is followed by four
2253       hexadecimal  digits,  in  which case the hexadecimal number defines the
2254       code point to match. By default, \u causes a compile time  error  (Perl
2255       uses it to upper case the following character).
2256
2257       (5)  \x matches a lower case "x" character unless it is followed by two
2258       hexadecimal digits, in which case the hexadecimal  number  defines  the
2259       code  point  to  match. By default, as in Perl, a hexadecimal number is
2260       always expected after \x, but it may have zero, one, or two digits (so,
2261       for example, \xz matches a binary zero character followed by z).
2262
2263         PCRE_MULTILINE
2264
2265       By  default,  for  the purposes of matching "start of line" and "end of
2266       line", PCRE treats the subject string as consisting of a single line of
2267       characters,  even if it actually contains newlines. The "start of line"
2268       metacharacter (^) matches only at the start of the string, and the "end
2269       of  line"  metacharacter  ($) matches only at the end of the string, or
2270       before a terminating newline (except when PCRE_DOLLAR_ENDONLY is  set).
2271       Note,  however,  that  unless  PCRE_DOTALL  is set, the "any character"
2272       metacharacter (.) does not match at a newline. This behaviour  (for  ^,
2273       $, and dot) is the same as Perl.
2274
2275       When  PCRE_MULTILINE  it  is set, the "start of line" and "end of line"
2276       constructs match immediately following or immediately  before  internal
2277       newlines  in  the  subject string, respectively, as well as at the very
2278       start and end. This is equivalent to Perl's /m option, and  it  can  be
2279       changed within a pattern by a (?m) option setting. If there are no new-
2280       lines in a subject string, or no occurrences of ^ or $  in  a  pattern,
2281       setting PCRE_MULTILINE has no effect.
2282
2283         PCRE_NEVER_UTF
2284
2285       This option locks out interpretation of the pattern as UTF-8 (or UTF-16
2286       or UTF-32 in the 16-bit and 32-bit libraries). In particular,  it  pre-
2287       vents  the  creator of the pattern from switching to UTF interpretation
2288       by starting the pattern with (*UTF). This may be useful in applications
2289       that  process  patterns  from  external  sources.  The  combination  of
2290       PCRE_UTF8 and PCRE_NEVER_UTF also causes an error.
2291
2292         PCRE_NEWLINE_CR
2293         PCRE_NEWLINE_LF
2294         PCRE_NEWLINE_CRLF
2295         PCRE_NEWLINE_ANYCRLF
2296         PCRE_NEWLINE_ANY
2297
2298       These options override the default newline definition that  was  chosen
2299       when  PCRE  was built. Setting the first or the second specifies that a
2300       newline is indicated by a single character (CR  or  LF,  respectively).
2301       Setting  PCRE_NEWLINE_CRLF specifies that a newline is indicated by the
2302       two-character CRLF  sequence.  Setting  PCRE_NEWLINE_ANYCRLF  specifies
2303       that any of the three preceding sequences should be recognized. Setting
2304       PCRE_NEWLINE_ANY specifies that any Unicode newline sequence should  be
2305       recognized.
2306
2307       In  an ASCII/Unicode environment, the Unicode newline sequences are the
2308       three just mentioned, plus the  single  characters  VT  (vertical  tab,
2309       U+000B), FF (form feed, U+000C), NEL (next line, U+0085), LS (line sep-
2310       arator, U+2028), and PS (paragraph separator, U+2029).  For  the  8-bit
2311       library, the last two are recognized only in UTF-8 mode.
2312
2313       When  PCRE is compiled to run in an EBCDIC (mainframe) environment, the
2314       code for CR is 0x0d, the same as ASCII. However, the character code for
2315       LF  is  normally 0x15, though in some EBCDIC environments 0x25 is used.
2316       Whichever of these is not LF is made to  correspond  to  Unicode's  NEL
2317       character.  EBCDIC  codes  are all less than 256. For more details, see
2318       the pcrebuild documentation.
2319
2320       The newline setting in the  options  word  uses  three  bits  that  are
2321       treated as a number, giving eight possibilities. Currently only six are
2322       used (default plus the five values above). This means that if  you  set
2323       more  than one newline option, the combination may or may not be sensi-
2324       ble. For example, PCRE_NEWLINE_CR with PCRE_NEWLINE_LF is equivalent to
2325       PCRE_NEWLINE_CRLF,  but other combinations may yield unused numbers and
2326       cause an error.
2327
2328       The only time that a line break in a pattern  is  specially  recognized
2329       when  compiling is when PCRE_EXTENDED is set. CR and LF are white space
2330       characters, and so are ignored in this mode. Also, an unescaped #  out-
2331       side  a  character class indicates a comment that lasts until after the
2332       next line break sequence. In other circumstances, line break  sequences
2333       in patterns are treated as literal data.
2334
2335       The newline option that is set at compile time becomes the default that
2336       is used for pcre_exec() and pcre_dfa_exec(), but it can be overridden.
2337
2338         PCRE_NO_AUTO_CAPTURE
2339
2340       If this option is set, it disables the use of numbered capturing paren-
2341       theses  in the pattern. Any opening parenthesis that is not followed by
2342       ? behaves as if it were followed by ?: but named parentheses can  still
2343       be  used  for  capturing  (and  they acquire numbers in the usual way).
2344       There is no equivalent of this option in Perl.
2345
2346         PCRE_NO_AUTO_POSSESS
2347
2348       If this option is set, it disables "auto-possessification". This is  an
2349       optimization  that,  for example, turns a+b into a++b in order to avoid
2350       backtracks into a+ that can never be successful. However,  if  callouts
2351       are  in  use,  auto-possessification  means that some of them are never
2352       taken. You can set this option if you want the matching functions to do
2353       a  full  unoptimized  search and run all the callouts, but it is mainly
2354       provided for testing purposes.
2355
2356         PCRE_NO_START_OPTIMIZE
2357
2358       This is an option that acts at matching time; that is, it is really  an
2359       option  for  pcre_exec()  or  pcre_dfa_exec().  If it is set at compile
2360       time, it is remembered with the compiled pattern and assumed at  match-
2361       ing  time.  This is necessary if you want to use JIT execution, because
2362       the JIT compiler needs to know whether or not this option is  set.  For
2363       details see the discussion of PCRE_NO_START_OPTIMIZE below.
2364
2365         PCRE_UCP
2366
2367       This  option changes the way PCRE processes \B, \b, \D, \d, \S, \s, \W,
2368       \w, and some of the POSIX character classes.  By  default,  only  ASCII
2369       characters  are  recognized, but if PCRE_UCP is set, Unicode properties
2370       are used instead to classify characters. More details are given in  the
2371       section  on generic character types in the pcrepattern page. If you set
2372       PCRE_UCP, matching one of the items it affects takes much  longer.  The
2373       option  is  available only if PCRE has been compiled with Unicode prop-
2374       erty support.
2375
2376         PCRE_UNGREEDY
2377
2378       This option inverts the "greediness" of the quantifiers  so  that  they
2379       are  not greedy by default, but become greedy if followed by "?". It is
2380       not compatible with Perl. It can also be set by a (?U)  option  setting
2381       within the pattern.
2382
2383         PCRE_UTF8
2384
2385       This  option  causes PCRE to regard both the pattern and the subject as
2386       strings of UTF-8 characters instead of single-byte strings. However, it
2387       is  available  only  when PCRE is built to include UTF support. If not,
2388       the use of this option provokes an error. Details of  how  this  option
2389       changes the behaviour of PCRE are given in the pcreunicode page.
2390
2391         PCRE_NO_UTF8_CHECK
2392
2393       When PCRE_UTF8 is set, the validity of the pattern as a UTF-8 string is
2394       automatically checked. There is a  discussion  about  the  validity  of
2395       UTF-8  strings in the pcreunicode page. If an invalid UTF-8 sequence is
2396       found, pcre_compile() returns an error. If you already know  that  your
2397       pattern  is valid, and you want to skip this check for performance rea-
2398       sons, you can set the PCRE_NO_UTF8_CHECK option.  When it is  set,  the
2399       effect of passing an invalid UTF-8 string as a pattern is undefined. It
2400       may cause your program to crash or loop. Note that this option can also
2401       be  passed to pcre_exec() and pcre_dfa_exec(), to suppress the validity
2402       checking of subject strings only. If the same string is  being  matched
2403       many  times, the option can be safely set for the second and subsequent
2404       matchings to improve performance.
2405
2406
2407COMPILATION ERROR CODES
2408
2409       The following table lists the error  codes  than  may  be  returned  by
2410       pcre_compile2(),  along with the error messages that may be returned by
2411       both compiling functions. Note that error  messages  are  always  8-bit
2412       ASCII  strings,  even  in 16-bit or 32-bit mode. As PCRE has developed,
2413       some error codes have fallen out of use. To avoid confusion, they  have
2414       not been re-used.
2415
2416          0  no error
2417          1  \ at end of pattern
2418          2  \c at end of pattern
2419          3  unrecognized character follows \
2420          4  numbers out of order in {} quantifier
2421          5  number too big in {} quantifier
2422          6  missing terminating ] for character class
2423          7  invalid escape sequence in character class
2424          8  range out of order in character class
2425          9  nothing to repeat
2426         10  [this code is not in use]
2427         11  internal error: unexpected repeat
2428         12  unrecognized character after (? or (?-
2429         13  POSIX named classes are supported only within a class
2430         14  missing )
2431         15  reference to non-existent subpattern
2432         16  erroffset passed as NULL
2433         17  unknown option bit(s) set
2434         18  missing ) after comment
2435         19  [this code is not in use]
2436         20  regular expression is too large
2437         21  failed to get memory
2438         22  unmatched parentheses
2439         23  internal error: code overflow
2440         24  unrecognized character after (?<
2441         25  lookbehind assertion is not fixed length
2442         26  malformed number or name after (?(
2443         27  conditional group contains more than two branches
2444         28  assertion expected after (?(
2445         29  (?R or (?[+-]digits must be followed by )
2446         30  unknown POSIX class name
2447         31  POSIX collating elements are not supported
2448         32  this version of PCRE is compiled without UTF support
2449         33  [this code is not in use]
2450         34  character value in \x{} or \o{} is too large
2451         35  invalid condition (?(0)
2452         36  \C not allowed in lookbehind assertion
2453         37  PCRE does not support \L, \l, \N{name}, \U, or \u
2454         38  number after (?C is > 255
2455         39  closing ) for (?C expected
2456         40  recursive call could loop indefinitely
2457         41  unrecognized character after (?P
2458         42  syntax error in subpattern name (missing terminator)
2459         43  two named subpatterns have the same name
2460         44  invalid UTF-8 string (specifically UTF-8)
2461         45  support for \P, \p, and \X has not been compiled
2462         46  malformed \P or \p sequence
2463         47  unknown property name after \P or \p
2464         48  subpattern name is too long (maximum 32 characters)
2465         49  too many named subpatterns (maximum 10000)
2466         50  [this code is not in use]
2467         51  octal value is greater than \377 in 8-bit non-UTF-8 mode
2468         52  internal error: overran compiling workspace
2469         53  internal error: previously-checked referenced subpattern
2470               not found
2471         54  DEFINE group contains more than one branch
2472         55  repeating a DEFINE group is not allowed
2473         56  inconsistent NEWLINE options
2474         57  \g is not followed by a braced, angle-bracketed, or quoted
2475               name/number or by a plain number
2476         58  a numbered reference must not be zero
2477         59  an argument is not allowed for (*ACCEPT), (*FAIL), or (*COMMIT)
2478         60  (*VERB) not recognized or malformed
2479         61  number is too big
2480         62  subpattern name expected
2481         63  digit expected after (?+
2482         64  ] is an invalid data character in JavaScript compatibility mode
2483         65  different names for subpatterns of the same number are
2484               not allowed
2485         66  (*MARK) must have an argument
2486         67  this version of PCRE is not compiled with Unicode property
2487               support
2488         68  \c must be followed by an ASCII character
2489         69  \k is not followed by a braced, angle-bracketed, or quoted name
2490         70  internal error: unknown opcode in find_fixedlength()
2491         71  \N is not supported in a class
2492         72  too many forward references
2493         73  disallowed Unicode code point (>= 0xd800 && <= 0xdfff)
2494         74  invalid UTF-16 string (specifically UTF-16)
2495         75  name is too long in (*MARK), (*PRUNE), (*SKIP), or (*THEN)
2496         76  character value in \u.... sequence is too large
2497         77  invalid UTF-32 string (specifically UTF-32)
2498         78  setting UTF is disabled by the application
2499         79  non-hex character in \x{} (closing brace missing?)
2500         80  non-octal character in \o{} (closing brace missing?)
2501         81  missing opening brace after \o
2502         82  parentheses are too deeply nested
2503         83  invalid range in character class
2504         84  group name must start with a non-digit
2505         85  parentheses are too deeply nested (stack check)
2506
2507       The  numbers  32  and 10000 in errors 48 and 49 are defaults; different
2508       values may be used if the limits were changed when PCRE was built.
2509
2510
2511STUDYING A PATTERN
2512
2513       pcre_extra *pcre_study(const pcre *code, int options,
2514            const char **errptr);
2515
2516       If a compiled pattern is going to be used several times,  it  is  worth
2517       spending more time analyzing it in order to speed up the time taken for
2518       matching. The function pcre_study() takes a pointer to a compiled  pat-
2519       tern as its first argument. If studying the pattern produces additional
2520       information that will help speed up matching,  pcre_study()  returns  a
2521       pointer  to a pcre_extra block, in which the study_data field points to
2522       the results of the study.
2523
2524       The  returned  value  from  pcre_study()  can  be  passed  directly  to
2525       pcre_exec()  or  pcre_dfa_exec(). However, a pcre_extra block also con-
2526       tains other fields that can be set by the caller before  the  block  is
2527       passed; these are described below in the section on matching a pattern.
2528
2529       If  studying  the  pattern  does  not  produce  any useful information,
2530       pcre_study() returns NULL by default.  In  that  circumstance,  if  the
2531       calling program wants to pass any of the other fields to pcre_exec() or
2532       pcre_dfa_exec(), it must set up its own pcre_extra block.  However,  if
2533       pcre_study()  is  called  with  the  PCRE_STUDY_EXTRA_NEEDED option, it
2534       returns a pcre_extra block even if studying did not find any additional
2535       information.  It  may still return NULL, however, if an error occurs in
2536       pcre_study().
2537
2538       The second argument of pcre_study() contains  option  bits.  There  are
2539       three further options in addition to PCRE_STUDY_EXTRA_NEEDED:
2540
2541         PCRE_STUDY_JIT_COMPILE
2542         PCRE_STUDY_JIT_PARTIAL_HARD_COMPILE
2543         PCRE_STUDY_JIT_PARTIAL_SOFT_COMPILE
2544
2545       If  any  of  these are set, and the just-in-time compiler is available,
2546       the pattern is further compiled into machine code  that  executes  much
2547       faster  than  the  pcre_exec()  interpretive  matching function. If the
2548       just-in-time compiler is not available, these options are ignored.  All
2549       undefined bits in the options argument must be zero.
2550
2551       JIT  compilation  is  a heavyweight optimization. It can take some time
2552       for patterns to be analyzed, and for one-off matches  and  simple  pat-
2553       terns  the benefit of faster execution might be offset by a much slower
2554       study time.  Not all patterns can be optimized by the JIT compiler. For
2555       those  that cannot be handled, matching automatically falls back to the
2556       pcre_exec() interpreter. For more details, see the  pcrejit  documenta-
2557       tion.
2558
2559       The  third argument for pcre_study() is a pointer for an error message.
2560       If studying succeeds (even if no data is  returned),  the  variable  it
2561       points  to  is  set  to NULL. Otherwise it is set to point to a textual
2562       error message. This is a static string that is part of the library. You
2563       must  not  try  to  free it. You should test the error pointer for NULL
2564       after calling pcre_study(), to be sure that it has run successfully.
2565
2566       When you are finished with a pattern, you can free the memory used  for
2567       the study data by calling pcre_free_study(). This function was added to
2568       the API for release 8.20. For earlier versions,  the  memory  could  be
2569       freed  with  pcre_free(), just like the pattern itself. This will still
2570       work in cases where JIT optimization is not used, but it  is  advisable
2571       to change to the new function when convenient.
2572
2573       This  is  a typical way in which pcre_study() is used (except that in a
2574       real application there should be tests for errors):
2575
2576         int rc;
2577         pcre *re;
2578         pcre_extra *sd;
2579         re = pcre_compile("pattern", 0, &error, &erroroffset, NULL);
2580         sd = pcre_study(
2581           re,             /* result of pcre_compile() */
2582           0,              /* no options */
2583           &error);        /* set to NULL or points to a message */
2584         rc = pcre_exec(   /* see below for details of pcre_exec() options */
2585           re, sd, "subject", 7, 0, 0, ovector, 30);
2586         ...
2587         pcre_free_study(sd);
2588         pcre_free(re);
2589
2590       Studying a pattern does two things: first, a lower bound for the length
2591       of subject string that is needed to match the pattern is computed. This
2592       does not mean that there are any strings of that length that match, but
2593       it  does  guarantee that no shorter strings match. The value is used to
2594       avoid wasting time by trying to match strings that are shorter than the
2595       lower  bound.  You  can find out the value in a calling program via the
2596       pcre_fullinfo() function.
2597
2598       Studying a pattern is also useful for non-anchored patterns that do not
2599       have  a  single fixed starting character. A bitmap of possible starting
2600       bytes is created. This speeds up finding a position in the  subject  at
2601       which to start matching. (In 16-bit mode, the bitmap is used for 16-bit
2602       values less than 256.  In 32-bit mode, the bitmap is  used  for  32-bit
2603       values less than 256.)
2604
2605       These  two optimizations apply to both pcre_exec() and pcre_dfa_exec(),
2606       and the information is also used by the JIT  compiler.   The  optimiza-
2607       tions  can  be  disabled  by setting the PCRE_NO_START_OPTIMIZE option.
2608       You might want to do this if your pattern contains callouts or  (*MARK)
2609       and  you  want  to make use of these facilities in cases where matching
2610       fails.
2611
2612       PCRE_NO_START_OPTIMIZE can be specified at either compile time or  exe-
2613       cution   time.   However,   if   PCRE_NO_START_OPTIMIZE  is  passed  to
2614       pcre_exec(), (that is, after any JIT compilation has happened) JIT exe-
2615       cution  is disabled. For JIT execution to work with PCRE_NO_START_OPTI-
2616       MIZE, the option must be set at compile time.
2617
2618       There is a longer discussion of PCRE_NO_START_OPTIMIZE below.
2619
2620
2621LOCALE SUPPORT
2622
2623       PCRE handles caseless matching, and determines whether  characters  are
2624       letters,  digits, or whatever, by reference to a set of tables, indexed
2625       by character code point. When running in UTF-8 mode, or in the  16-  or
2626       32-bit libraries, this applies only to characters with code points less
2627       than 256. By default, higher-valued code  points  never  match  escapes
2628       such  as \w or \d. However, if PCRE is built with Unicode property sup-
2629       port, all characters can be tested with \p and \P,  or,  alternatively,
2630       the  PCRE_UCP option can be set when a pattern is compiled; this causes
2631       \w and friends to use Unicode property support instead of the  built-in
2632       tables.
2633
2634       The  use  of  locales  with Unicode is discouraged. If you are handling
2635       characters with code points greater than 128,  you  should  either  use
2636       Unicode support, or use locales, but not try to mix the two.
2637
2638       PCRE  contains  an  internal set of tables that are used when the final
2639       argument of pcre_compile() is  NULL.  These  are  sufficient  for  many
2640       applications.  Normally, the internal tables recognize only ASCII char-
2641       acters. However, when PCRE is built, it is possible to cause the inter-
2642       nal tables to be rebuilt in the default "C" locale of the local system,
2643       which may cause them to be different.
2644
2645       The internal tables can always be overridden by tables supplied by  the
2646       application that calls PCRE. These may be created in a different locale
2647       from the default. As more and more applications change  to  using  Uni-
2648       code, the need for this locale support is expected to die away.
2649
2650       External  tables  are  built by calling the pcre_maketables() function,
2651       which has no arguments, in the relevant locale. The result can then  be
2652       passed  to  pcre_compile() as often as necessary. For example, to build
2653       and use tables that  are  appropriate  for  the  French  locale  (where
2654       accented  characters  with  values greater than 128 are treated as let-
2655       ters), the following code could be used:
2656
2657         setlocale(LC_CTYPE, "fr_FR");
2658         tables = pcre_maketables();
2659         re = pcre_compile(..., tables);
2660
2661       The locale name "fr_FR" is used on Linux and other  Unix-like  systems;
2662       if you are using Windows, the name for the French locale is "french".
2663
2664       When  pcre_maketables()  runs,  the  tables are built in memory that is
2665       obtained via pcre_malloc. It is the caller's responsibility  to  ensure
2666       that  the memory containing the tables remains available for as long as
2667       it is needed.
2668
2669       The pointer that is passed to pcre_compile() is saved with the compiled
2670       pattern,  and the same tables are used via this pointer by pcre_study()
2671       and also by pcre_exec() and pcre_dfa_exec(). Thus, for any single  pat-
2672       tern, compilation, studying and matching all happen in the same locale,
2673       but different patterns can be processed in different locales.
2674
2675       It is possible to pass a table pointer or NULL (indicating the  use  of
2676       the internal tables) to pcre_exec() or pcre_dfa_exec() (see the discus-
2677       sion below in the section on matching a pattern). This facility is pro-
2678       vided  for  use  with  pre-compiled  patterns  that have been saved and
2679       reloaded.  Character tables are not saved with patterns, so if  a  non-
2680       standard table was used at compile time, it must be provided again when
2681       the reloaded pattern is matched. Attempting to  use  this  facility  to
2682       match a pattern in a different locale from the one in which it was com-
2683       piled is likely to lead to anomalous (usually incorrect) results.
2684
2685
2686INFORMATION ABOUT A PATTERN
2687
2688       int pcre_fullinfo(const pcre *code, const pcre_extra *extra,
2689            int what, void *where);
2690
2691       The pcre_fullinfo() function returns information about a compiled  pat-
2692       tern.  It replaces the pcre_info() function, which was removed from the
2693       library at version 8.30, after more than 10 years of obsolescence.
2694
2695       The first argument for pcre_fullinfo() is a  pointer  to  the  compiled
2696       pattern.  The second argument is the result of pcre_study(), or NULL if
2697       the pattern was not studied. The third argument specifies  which  piece
2698       of  information  is required, and the fourth argument is a pointer to a
2699       variable to receive the data. The yield of the  function  is  zero  for
2700       success, or one of the following negative numbers:
2701
2702         PCRE_ERROR_NULL           the argument code was NULL
2703                                   the argument where was NULL
2704         PCRE_ERROR_BADMAGIC       the "magic number" was not found
2705         PCRE_ERROR_BADENDIANNESS  the pattern was compiled with different
2706                                   endianness
2707         PCRE_ERROR_BADOPTION      the value of what was invalid
2708         PCRE_ERROR_UNSET          the requested field is not set
2709
2710       The  "magic  number" is placed at the start of each compiled pattern as
2711       an simple check against passing an arbitrary memory pointer. The  endi-
2712       anness error can occur if a compiled pattern is saved and reloaded on a
2713       different host. Here is a typical call of  pcre_fullinfo(),  to  obtain
2714       the length of the compiled pattern:
2715
2716         int rc;
2717         size_t length;
2718         rc = pcre_fullinfo(
2719           re,               /* result of pcre_compile() */
2720           sd,               /* result of pcre_study(), or NULL */
2721           PCRE_INFO_SIZE,   /* what is required */
2722           &length);         /* where to put the data */
2723
2724       The  possible  values for the third argument are defined in pcre.h, and
2725       are as follows:
2726
2727         PCRE_INFO_BACKREFMAX
2728
2729       Return the number of the highest back reference  in  the  pattern.  The
2730       fourth  argument  should  point to an int variable. Zero is returned if
2731       there are no back references.
2732
2733         PCRE_INFO_CAPTURECOUNT
2734
2735       Return the number of capturing subpatterns in the pattern.  The  fourth
2736       argument should point to an int variable.
2737
2738         PCRE_INFO_DEFAULT_TABLES
2739
2740       Return  a pointer to the internal default character tables within PCRE.
2741       The fourth argument should point to an unsigned char *  variable.  This
2742       information call is provided for internal use by the pcre_study() func-
2743       tion. External callers can cause PCRE to use  its  internal  tables  by
2744       passing a NULL table pointer.
2745
2746         PCRE_INFO_FIRSTBYTE (deprecated)
2747
2748       Return information about the first data unit of any matched string, for
2749       a non-anchored pattern. The name of this option  refers  to  the  8-bit
2750       library,  where  data units are bytes. The fourth argument should point
2751       to an int variable. Negative values are used for  special  cases.  How-
2752       ever,  this  means  that when the 32-bit library is in non-UTF-32 mode,
2753       the full 32-bit range of characters cannot be returned. For  this  rea-
2754       son,  this  value  is deprecated; use PCRE_INFO_FIRSTCHARACTERFLAGS and
2755       PCRE_INFO_FIRSTCHARACTER instead.
2756
2757       If there is a fixed first value, for example, the  letter  "c"  from  a
2758       pattern  such  as (cat|cow|coyote), its value is returned. In the 8-bit
2759       library, the value is always less than 256. In the 16-bit  library  the
2760       value can be up to 0xffff. In the 32-bit library the value can be up to
2761       0x10ffff.
2762
2763       If there is no fixed first value, and if either
2764
2765       (a) the pattern was compiled with the PCRE_MULTILINE option, and  every
2766       branch starts with "^", or
2767
2768       (b) every branch of the pattern starts with ".*" and PCRE_DOTALL is not
2769       set (if it were set, the pattern would be anchored),
2770
2771       -1 is returned, indicating that the pattern matches only at  the  start
2772       of  a  subject string or after any newline within the string. Otherwise
2773       -2 is returned. For anchored patterns, -2 is returned.
2774
2775         PCRE_INFO_FIRSTCHARACTER
2776
2777       Return the value of the first data  unit  (non-UTF  character)  of  any
2778       matched  string  in  the  situation where PCRE_INFO_FIRSTCHARACTERFLAGS
2779       returns 1; otherwise return 0. The fourth argument should point  to  an
2780       uint_t variable.
2781
2782       In  the 8-bit library, the value is always less than 256. In the 16-bit
2783       library the value can be up to 0xffff. In the 32-bit library in  UTF-32
2784       mode  the  value  can  be up to 0x10ffff, and up to 0xffffffff when not
2785       using UTF-32 mode.
2786
2787         PCRE_INFO_FIRSTCHARACTERFLAGS
2788
2789       Return information about the first data unit of any matched string, for
2790       a  non-anchored  pattern.  The  fourth  argument should point to an int
2791       variable.
2792
2793       If there is a fixed first value, for example, the  letter  "c"  from  a
2794       pattern  such  as  (cat|cow|coyote),  1  is returned, and the character
2795       value can be retrieved using PCRE_INFO_FIRSTCHARACTER. If there  is  no
2796       fixed first value, and if either
2797
2798       (a)  the pattern was compiled with the PCRE_MULTILINE option, and every
2799       branch starts with "^", or
2800
2801       (b) every branch of the pattern starts with ".*" and PCRE_DOTALL is not
2802       set (if it were set, the pattern would be anchored),
2803
2804       2 is returned, indicating that the pattern matches only at the start of
2805       a subject string or after any newline within the string. Otherwise 0 is
2806       returned. For anchored patterns, 0 is returned.
2807
2808         PCRE_INFO_FIRSTTABLE
2809
2810       If  the pattern was studied, and this resulted in the construction of a
2811       256-bit table indicating a fixed set of values for the first data  unit
2812       in  any  matching string, a pointer to the table is returned. Otherwise
2813       NULL is returned. The fourth argument should point to an unsigned  char
2814       * variable.
2815
2816         PCRE_INFO_HASCRORLF
2817
2818       Return  1  if  the  pattern  contains any explicit matches for CR or LF
2819       characters, otherwise 0. The fourth argument should  point  to  an  int
2820       variable.  An explicit match is either a literal CR or LF character, or
2821       \r or \n.
2822
2823         PCRE_INFO_JCHANGED
2824
2825       Return 1 if the (?J) or (?-J) option setting is used  in  the  pattern,
2826       otherwise  0. The fourth argument should point to an int variable. (?J)
2827       and (?-J) set and unset the local PCRE_DUPNAMES option, respectively.
2828
2829         PCRE_INFO_JIT
2830
2831       Return 1 if the pattern was studied with one of the  JIT  options,  and
2832       just-in-time compiling was successful. The fourth argument should point
2833       to an int variable. A return value of 0 means that JIT support  is  not
2834       available  in this version of PCRE, or that the pattern was not studied
2835       with a JIT option, or that the JIT compiler could not handle this  par-
2836       ticular  pattern. See the pcrejit documentation for details of what can
2837       and cannot be handled.
2838
2839         PCRE_INFO_JITSIZE
2840
2841       If the pattern was successfully studied with a JIT option,  return  the
2842       size  of the JIT compiled code, otherwise return zero. The fourth argu-
2843       ment should point to a size_t variable.
2844
2845         PCRE_INFO_LASTLITERAL
2846
2847       Return the value of the rightmost literal data unit that must exist  in
2848       any  matched  string, other than at its start, if such a value has been
2849       recorded. The fourth argument should point to an int variable. If there
2850       is no such value, -1 is returned. For anchored patterns, a last literal
2851       value is recorded only if it follows something of variable length.  For
2852       example, for the pattern /^a\d+z\d+/ the returned value is "z", but for
2853       /^a\dz\d/ the returned value is -1.
2854
2855       Since for the 32-bit library using the non-UTF-32 mode,  this  function
2856       is  unable to return the full 32-bit range of characters, this value is
2857       deprecated;     instead     the     PCRE_INFO_REQUIREDCHARFLAGS     and
2858       PCRE_INFO_REQUIREDCHAR values should be used.
2859
2860         PCRE_INFO_MATCH_EMPTY
2861
2862       Return  1  if  the  pattern can match an empty string, otherwise 0. The
2863       fourth argument should point to an int variable.
2864
2865         PCRE_INFO_MATCHLIMIT
2866
2867       If the pattern set a match limit by  including  an  item  of  the  form
2868       (*LIMIT_MATCH=nnnn)  at  the  start,  the value is returned. The fourth
2869       argument should point to an unsigned 32-bit integer. If no  such  value
2870       has   been   set,   the  call  to  pcre_fullinfo()  returns  the  error
2871       PCRE_ERROR_UNSET.
2872
2873         PCRE_INFO_MAXLOOKBEHIND
2874
2875       Return the number of characters (NB not  data  units)  in  the  longest
2876       lookbehind  assertion  in  the pattern. This information is useful when
2877       doing multi-segment matching using  the  partial  matching  facilities.
2878       Note that the simple assertions \b and \B require a one-character look-
2879       behind. \A also registers a one-character lookbehind,  though  it  does
2880       not  actually inspect the previous character. This is to ensure that at
2881       least one character from the old segment is retained when a new segment
2882       is processed. Otherwise, if there are no lookbehinds in the pattern, \A
2883       might match incorrectly at the start of a new segment.
2884
2885         PCRE_INFO_MINLENGTH
2886
2887       If the pattern was studied and a minimum length  for  matching  subject
2888       strings  was  computed,  its  value is returned. Otherwise the returned
2889       value is -1. The value is a number of characters, which in UTF mode may
2890       be  different from the number of data units. The fourth argument should
2891       point to an int variable. A non-negative value is a lower bound to  the
2892       length  of  any  matching  string. There may not be any strings of that
2893       length that do actually match, but every string that does match  is  at
2894       least that long.
2895
2896         PCRE_INFO_NAMECOUNT
2897         PCRE_INFO_NAMEENTRYSIZE
2898         PCRE_INFO_NAMETABLE
2899
2900       PCRE  supports the use of named as well as numbered capturing parenthe-
2901       ses. The names are just an additional way of identifying the  parenthe-
2902       ses, which still acquire numbers. Several convenience functions such as
2903       pcre_get_named_substring() are provided for  extracting  captured  sub-
2904       strings  by  name. It is also possible to extract the data directly, by
2905       first converting the name to a number in order to  access  the  correct
2906       pointers in the output vector (described with pcre_exec() below). To do
2907       the conversion, you need  to  use  the  name-to-number  map,  which  is
2908       described by these three values.
2909
2910       The map consists of a number of fixed-size entries. PCRE_INFO_NAMECOUNT
2911       gives the number of entries, and PCRE_INFO_NAMEENTRYSIZE gives the size
2912       of  each  entry;  both  of  these  return  an int value. The entry size
2913       depends on the length of the longest name. PCRE_INFO_NAMETABLE  returns
2914       a pointer to the first entry of the table. This is a pointer to char in
2915       the 8-bit library, where the first two bytes of each entry are the num-
2916       ber  of  the capturing parenthesis, most significant byte first. In the
2917       16-bit library, the pointer points to 16-bit data units, the  first  of
2918       which  contains  the  parenthesis  number.  In  the 32-bit library, the
2919       pointer points to 32-bit data units, the first of  which  contains  the
2920       parenthesis  number.  The  rest of the entry is the corresponding name,
2921       zero terminated.
2922
2923       The names are in alphabetical order. If (?| is used to create  multiple
2924       groups  with  the same number, as described in the section on duplicate
2925       subpattern numbers in the pcrepattern page, the groups may be given the
2926       same  name,  but  there is only one entry in the table. Different names
2927       for groups of the same number are not permitted.  Duplicate  names  for
2928       subpatterns with different numbers are permitted, but only if PCRE_DUP-
2929       NAMES is set. They appear in the table in the order in which they  were
2930       found  in  the  pattern.  In  the  absence  of (?| this is the order of
2931       increasing number; when (?| is used this is not  necessarily  the  case
2932       because later subpatterns may have lower numbers.
2933
2934       As  a  simple  example of the name/number table, consider the following
2935       pattern after compilation by the 8-bit library (assume PCRE_EXTENDED is
2936       set, so white space - including newlines - is ignored):
2937
2938         (?<date> (?<year>(\d\d)?\d\d) -
2939         (?<month>\d\d) - (?<day>\d\d) )
2940
2941       There  are  four  named subpatterns, so the table has four entries, and
2942       each entry in the table is eight bytes long. The table is  as  follows,
2943       with non-printing bytes shows in hexadecimal, and undefined bytes shown
2944       as ??:
2945
2946         00 01 d  a  t  e  00 ??
2947         00 05 d  a  y  00 ?? ??
2948         00 04 m  o  n  t  h  00
2949         00 02 y  e  a  r  00 ??
2950
2951       When writing code to extract data  from  named  subpatterns  using  the
2952       name-to-number  map,  remember that the length of the entries is likely
2953       to be different for each compiled pattern.
2954
2955         PCRE_INFO_OKPARTIAL
2956
2957       Return 1  if  the  pattern  can  be  used  for  partial  matching  with
2958       pcre_exec(),  otherwise  0.  The fourth argument should point to an int
2959       variable. From  release  8.00,  this  always  returns  1,  because  the
2960       restrictions  that  previously  applied  to  partial matching have been
2961       lifted. The pcrepartial documentation gives details of  partial  match-
2962       ing.
2963
2964         PCRE_INFO_OPTIONS
2965
2966       Return  a  copy of the options with which the pattern was compiled. The
2967       fourth argument should point to an unsigned long  int  variable.  These
2968       option bits are those specified in the call to pcre_compile(), modified
2969       by any top-level option settings at the start of the pattern itself. In
2970       other  words,  they are the options that will be in force when matching
2971       starts. For example, if the pattern /(?im)abc(?-i)d/ is  compiled  with
2972       the  PCRE_EXTENDED option, the result is PCRE_CASELESS, PCRE_MULTILINE,
2973       and PCRE_EXTENDED.
2974
2975       A pattern is automatically anchored by PCRE if  all  of  its  top-level
2976       alternatives begin with one of the following:
2977
2978         ^     unless PCRE_MULTILINE is set
2979         \A    always
2980         \G    always
2981         .*    if PCRE_DOTALL is set and there are no back
2982                 references to the subpattern in which .* appears
2983
2984       For such patterns, the PCRE_ANCHORED bit is set in the options returned
2985       by pcre_fullinfo().
2986
2987         PCRE_INFO_RECURSIONLIMIT
2988
2989       If the pattern set a recursion limit by including an item of  the  form
2990       (*LIMIT_RECURSION=nnnn) at the start, the value is returned. The fourth
2991       argument should point to an unsigned 32-bit integer. If no  such  value
2992       has   been   set,   the  call  to  pcre_fullinfo()  returns  the  error
2993       PCRE_ERROR_UNSET.
2994
2995         PCRE_INFO_SIZE
2996
2997       Return the size of  the  compiled  pattern  in  bytes  (for  all  three
2998       libraries). The fourth argument should point to a size_t variable. This
2999       value does not include the size of the pcre structure that is  returned
3000       by  pcre_compile().  The  value  that  is  passed  as  the  argument to
3001       pcre_malloc() when pcre_compile() is getting memory in which  to  place
3002       the compiled data is the value returned by this option plus the size of
3003       the pcre structure. Studying a compiled pattern, with or  without  JIT,
3004       does not alter the value returned by this option.
3005
3006         PCRE_INFO_STUDYSIZE
3007
3008       Return  the  size  in bytes (for all three libraries) of the data block
3009       pointed to by the study_data field in a pcre_extra block. If pcre_extra
3010       is  NULL, or there is no study data, zero is returned. The fourth argu-
3011       ment should point to a size_t variable. The study_data field is set  by
3012       pcre_study() to record information that will speed up matching (see the
3013       section entitled  "Studying  a  pattern"  above).  The  format  of  the
3014       study_data  block is private, but its length is made available via this
3015       option so that it can be saved and  restored  (see  the  pcreprecompile
3016       documentation for details).
3017
3018         PCRE_INFO_REQUIREDCHARFLAGS
3019
3020       Returns  1 if there is a rightmost literal data unit that must exist in
3021       any matched string, other than at its start. The fourth argument should
3022       point  to an int variable. If there is no such value, 0 is returned. If
3023       returning  1,  the  character  value  itself  can  be  retrieved  using
3024       PCRE_INFO_REQUIREDCHAR.
3025
3026       For anchored patterns, a last literal value is recorded only if it fol-
3027       lows something  of  variable  length.  For  example,  for  the  pattern
3028       /^a\d+z\d+/   the   returned   value   1   (with   "z"   returned  from
3029       PCRE_INFO_REQUIREDCHAR), but for /^a\dz\d/ the returned value is 0.
3030
3031         PCRE_INFO_REQUIREDCHAR
3032
3033       Return the value of the rightmost literal data unit that must exist  in
3034       any  matched  string, other than at its start, if such a value has been
3035       recorded. The fourth argument should point to an uint32_t variable.  If
3036       there is no such value, 0 is returned.
3037
3038
3039REFERENCE COUNTS
3040
3041       int pcre_refcount(pcre *code, int adjust);
3042
3043       The  pcre_refcount()  function is used to maintain a reference count in
3044       the data block that contains a compiled pattern. It is provided for the
3045       benefit  of  applications  that  operate  in an object-oriented manner,
3046       where different parts of the application may be using the same compiled
3047       pattern, but you want to free the block when they are all done.
3048
3049       When a pattern is compiled, the reference count field is initialized to
3050       zero.  It is changed only by calling this function, whose action is  to
3051       add  the  adjust  value  (which may be positive or negative) to it. The
3052       yield of the function is the new value. However, the value of the count
3053       is  constrained to lie between 0 and 65535, inclusive. If the new value
3054       is outside these limits, it is forced to the appropriate limit value.
3055
3056       Except when it is zero, the reference count is not correctly  preserved
3057       if  a  pattern  is  compiled on one host and then transferred to a host
3058       whose byte-order is different. (This seems a highly unlikely scenario.)
3059
3060
3061MATCHING A PATTERN: THE TRADITIONAL FUNCTION
3062
3063       int pcre_exec(const pcre *code, const pcre_extra *extra,
3064            const char *subject, int length, int startoffset,
3065            int options, int *ovector, int ovecsize);
3066
3067       The function pcre_exec() is called to match a subject string against  a
3068       compiled  pattern, which is passed in the code argument. If the pattern
3069       was studied, the result of the study should  be  passed  in  the  extra
3070       argument.  You  can call pcre_exec() with the same code and extra argu-
3071       ments as many times as you like, in order to  match  different  subject
3072       strings with the same pattern.
3073
3074       This  function  is  the  main  matching facility of the library, and it
3075       operates in a Perl-like manner. For specialist use  there  is  also  an
3076       alternative  matching function, which is described below in the section
3077       about the pcre_dfa_exec() function.
3078
3079       In most applications, the pattern will have been compiled (and  option-
3080       ally  studied)  in the same process that calls pcre_exec(). However, it
3081       is possible to save compiled patterns and study data, and then use them
3082       later  in  different processes, possibly even on different hosts. For a
3083       discussion about this, see the pcreprecompile documentation.
3084
3085       Here is an example of a simple call to pcre_exec():
3086
3087         int rc;
3088         int ovector[30];
3089         rc = pcre_exec(
3090           re,             /* result of pcre_compile() */
3091           NULL,           /* we didn't study the pattern */
3092           "some string",  /* the subject string */
3093           11,             /* the length of the subject string */
3094           0,              /* start at offset 0 in the subject */
3095           0,              /* default options */
3096           ovector,        /* vector of integers for substring information */
3097           30);            /* number of elements (NOT size in bytes) */
3098
3099   Extra data for pcre_exec()
3100
3101       If the extra argument is not NULL, it must point to a  pcre_extra  data
3102       block.  The pcre_study() function returns such a block (when it doesn't
3103       return NULL), but you can also create one for yourself, and pass  addi-
3104       tional  information  in it. The pcre_extra block contains the following
3105       fields (not necessarily in this order):
3106
3107         unsigned long int flags;
3108         void *study_data;
3109         void *executable_jit;
3110         unsigned long int match_limit;
3111         unsigned long int match_limit_recursion;
3112         void *callout_data;
3113         const unsigned char *tables;
3114         unsigned char **mark;
3115
3116       In the 16-bit version of  this  structure,  the  mark  field  has  type
3117       "PCRE_UCHAR16 **".
3118
3119       In  the  32-bit  version  of  this  structure,  the mark field has type
3120       "PCRE_UCHAR32 **".
3121
3122       The flags field is used to specify which of the other fields  are  set.
3123       The flag bits are:
3124
3125         PCRE_EXTRA_CALLOUT_DATA
3126         PCRE_EXTRA_EXECUTABLE_JIT
3127         PCRE_EXTRA_MARK
3128         PCRE_EXTRA_MATCH_LIMIT
3129         PCRE_EXTRA_MATCH_LIMIT_RECURSION
3130         PCRE_EXTRA_STUDY_DATA
3131         PCRE_EXTRA_TABLES
3132
3133       Other  flag  bits should be set to zero. The study_data field and some-
3134       times the executable_jit field are set in the pcre_extra block that  is
3135       returned  by pcre_study(), together with the appropriate flag bits. You
3136       should not set these yourself, but you may add to the block by  setting
3137       other fields and their corresponding flag bits.
3138
3139       The match_limit field provides a means of preventing PCRE from using up
3140       a vast amount of resources when running patterns that are not going  to
3141       match,  but  which  have  a very large number of possibilities in their
3142       search trees. The classic example is a pattern that uses nested  unlim-
3143       ited repeats.
3144
3145       Internally,  pcre_exec() uses a function called match(), which it calls
3146       repeatedly (sometimes recursively). The limit  set  by  match_limit  is
3147       imposed  on the number of times this function is called during a match,
3148       which has the effect of limiting the amount of  backtracking  that  can
3149       take place. For patterns that are not anchored, the count restarts from
3150       zero for each position in the subject string.
3151
3152       When pcre_exec() is called with a pattern that was successfully studied
3153       with  a  JIT  option, the way that the matching is executed is entirely
3154       different.  However, there is still the possibility of runaway matching
3155       that goes on for a very long time, and so the match_limit value is also
3156       used in this case (but in a different way) to limit how long the match-
3157       ing can continue.
3158
3159       The  default  value  for  the  limit can be set when PCRE is built; the
3160       default default is 10 million, which handles all but the  most  extreme
3161       cases.  You  can  override  the  default by suppling pcre_exec() with a
3162       pcre_extra    block    in    which    match_limit    is    set,     and
3163       PCRE_EXTRA_MATCH_LIMIT  is  set  in  the  flags  field. If the limit is
3164       exceeded, pcre_exec() returns PCRE_ERROR_MATCHLIMIT.
3165
3166       A value for the match limit may also be supplied  by  an  item  at  the
3167       start of a pattern of the form
3168
3169         (*LIMIT_MATCH=d)
3170
3171       where  d is a decimal number. However, such a setting is ignored unless
3172       d is less than the limit set by the caller of  pcre_exec()  or,  if  no
3173       such limit is set, less than the default.
3174
3175       The  match_limit_recursion field is similar to match_limit, but instead
3176       of limiting the total number of times that match() is called, it limits
3177       the  depth  of  recursion. The recursion depth is a smaller number than
3178       the total number of calls, because not all calls to match() are  recur-
3179       sive.  This limit is of use only if it is set smaller than match_limit.
3180
3181       Limiting  the  recursion  depth limits the amount of machine stack that
3182       can be used, or, when PCRE has been compiled to use memory on the  heap
3183       instead  of the stack, the amount of heap memory that can be used. This
3184       limit is not relevant, and is ignored, when matching is done using  JIT
3185       compiled code.
3186
3187       The  default  value  for  match_limit_recursion can be set when PCRE is
3188       built; the default default  is  the  same  value  as  the  default  for
3189       match_limit.  You can override the default by suppling pcre_exec() with
3190       a  pcre_extra  block  in  which  match_limit_recursion  is   set,   and
3191       PCRE_EXTRA_MATCH_LIMIT_RECURSION  is  set  in  the  flags field. If the
3192       limit is exceeded, pcre_exec() returns PCRE_ERROR_RECURSIONLIMIT.
3193
3194       A value for the recursion limit may also be supplied by an item at  the
3195       start of a pattern of the form
3196
3197         (*LIMIT_RECURSION=d)
3198
3199       where  d is a decimal number. However, such a setting is ignored unless
3200       d is less than the limit set by the caller of  pcre_exec()  or,  if  no
3201       such limit is set, less than the default.
3202
3203       The  callout_data  field is used in conjunction with the "callout" fea-
3204       ture, and is described in the pcrecallout documentation.
3205
3206       The tables field is provided for use with patterns that have been  pre-
3207       compiled using custom character tables, saved to disc or elsewhere, and
3208       then reloaded, because the tables that were used to compile  a  pattern
3209       are  not saved with it. See the pcreprecompile documentation for a dis-
3210       cussion of saving compiled patterns for later use. If  NULL  is  passed
3211       using this mechanism, it forces PCRE's internal tables to be used.
3212
3213       Warning:  The  tables  that  pcre_exec() uses must be the same as those
3214       that were used when the pattern was compiled. If this is not the  case,
3215       the behaviour of pcre_exec() is undefined. Therefore, when a pattern is
3216       compiled and matched in the same process, this field  should  never  be
3217       set. In this (the most common) case, the correct table pointer is auto-
3218       matically passed with  the  compiled  pattern  from  pcre_compile()  to
3219       pcre_exec().
3220
3221       If  PCRE_EXTRA_MARK  is  set in the flags field, the mark field must be
3222       set to point to a suitable variable. If the pattern contains any  back-
3223       tracking  control verbs such as (*MARK:NAME), and the execution ends up
3224       with a name to pass back, a pointer to the  name  string  (zero  termi-
3225       nated)  is  placed  in  the  variable pointed to by the mark field. The
3226       names are within the compiled pattern; if you wish  to  retain  such  a
3227       name  you must copy it before freeing the memory of a compiled pattern.
3228       If there is no name to pass back, the variable pointed to by  the  mark
3229       field  is  set  to NULL. For details of the backtracking control verbs,
3230       see the section entitled "Backtracking control" in the pcrepattern doc-
3231       umentation.
3232
3233   Option bits for pcre_exec()
3234
3235       The  unused  bits of the options argument for pcre_exec() must be zero.
3236       The only bits that may  be  set  are  PCRE_ANCHORED,  PCRE_NEWLINE_xxx,
3237       PCRE_NOTBOL,    PCRE_NOTEOL,    PCRE_NOTEMPTY,   PCRE_NOTEMPTY_ATSTART,
3238       PCRE_NO_START_OPTIMIZE,  PCRE_NO_UTF8_CHECK,   PCRE_PARTIAL_HARD,   and
3239       PCRE_PARTIAL_SOFT.
3240
3241       If  the  pattern  was successfully studied with one of the just-in-time
3242       (JIT) compile options, the only supported options for JIT execution are
3243       PCRE_NO_UTF8_CHECK,     PCRE_NOTBOL,     PCRE_NOTEOL,    PCRE_NOTEMPTY,
3244       PCRE_NOTEMPTY_ATSTART, PCRE_PARTIAL_HARD, and PCRE_PARTIAL_SOFT. If  an
3245       unsupported  option  is  used, JIT execution is disabled and the normal
3246       interpretive code in pcre_exec() is run.
3247
3248         PCRE_ANCHORED
3249
3250       The PCRE_ANCHORED option limits pcre_exec() to matching  at  the  first
3251       matching  position.  If  a  pattern was compiled with PCRE_ANCHORED, or
3252       turned out to be anchored by virtue of its contents, it cannot be  made
3253       unachored at matching time.
3254
3255         PCRE_BSR_ANYCRLF
3256         PCRE_BSR_UNICODE
3257
3258       These options (which are mutually exclusive) control what the \R escape
3259       sequence matches. The choice is either to match only CR, LF,  or  CRLF,
3260       or  to  match  any Unicode newline sequence. These options override the
3261       choice that was made or defaulted when the pattern was compiled.
3262
3263         PCRE_NEWLINE_CR
3264         PCRE_NEWLINE_LF
3265         PCRE_NEWLINE_CRLF
3266         PCRE_NEWLINE_ANYCRLF
3267         PCRE_NEWLINE_ANY
3268
3269       These options override  the  newline  definition  that  was  chosen  or
3270       defaulted  when the pattern was compiled. For details, see the descrip-
3271       tion of pcre_compile()  above.  During  matching,  the  newline  choice
3272       affects  the  behaviour  of the dot, circumflex, and dollar metacharac-
3273       ters. It may also alter the way the match position is advanced after  a
3274       match failure for an unanchored pattern.
3275
3276       When  PCRE_NEWLINE_CRLF,  PCRE_NEWLINE_ANYCRLF,  or PCRE_NEWLINE_ANY is
3277       set, and a match attempt for an unanchored pattern fails when the  cur-
3278       rent  position  is  at  a  CRLF  sequence,  and the pattern contains no
3279       explicit matches for  CR  or  LF  characters,  the  match  position  is
3280       advanced by two characters instead of one, in other words, to after the
3281       CRLF.
3282
3283       The above rule is a compromise that makes the most common cases work as
3284       expected.  For  example,  if  the  pattern  is .+A (and the PCRE_DOTALL
3285       option is not set), it does not match the string "\r\nA" because, after
3286       failing  at the start, it skips both the CR and the LF before retrying.
3287       However, the pattern [\r\n]A does match that string,  because  it  con-
3288       tains an explicit CR or LF reference, and so advances only by one char-
3289       acter after the first failure.
3290
3291       An explicit match for CR of LF is either a literal appearance of one of
3292       those  characters,  or  one  of the \r or \n escape sequences. Implicit
3293       matches such as [^X] do not count, nor does \s (which includes  CR  and
3294       LF in the characters that it matches).
3295
3296       Notwithstanding  the above, anomalous effects may still occur when CRLF
3297       is a valid newline sequence and explicit \r or \n escapes appear in the
3298       pattern.
3299
3300         PCRE_NOTBOL
3301
3302       This option specifies that first character of the subject string is not
3303       the beginning of a line, so the  circumflex  metacharacter  should  not
3304       match  before it. Setting this without PCRE_MULTILINE (at compile time)
3305       causes circumflex never to match. This option affects only  the  behav-
3306       iour of the circumflex metacharacter. It does not affect \A.
3307
3308         PCRE_NOTEOL
3309
3310       This option specifies that the end of the subject string is not the end
3311       of a line, so the dollar metacharacter should not match it nor  (except
3312       in  multiline mode) a newline immediately before it. Setting this with-
3313       out PCRE_MULTILINE (at compile time) causes dollar never to match. This
3314       option  affects only the behaviour of the dollar metacharacter. It does
3315       not affect \Z or \z.
3316
3317         PCRE_NOTEMPTY
3318
3319       An empty string is not considered to be a valid match if this option is
3320       set.  If  there are alternatives in the pattern, they are tried. If all
3321       the alternatives match the empty string, the entire  match  fails.  For
3322       example, if the pattern
3323
3324         a?b?
3325
3326       is  applied  to  a  string not beginning with "a" or "b", it matches an
3327       empty string at the start of the subject. With PCRE_NOTEMPTY set,  this
3328       match is not valid, so PCRE searches further into the string for occur-
3329       rences of "a" or "b".
3330
3331         PCRE_NOTEMPTY_ATSTART
3332
3333       This is like PCRE_NOTEMPTY, except that an empty string match  that  is
3334       not  at  the  start  of  the  subject  is  permitted. If the pattern is
3335       anchored, such a match can occur only if the pattern contains \K.
3336
3337       Perl    has    no    direct    equivalent    of    PCRE_NOTEMPTY     or
3338       PCRE_NOTEMPTY_ATSTART,  but  it  does  make a special case of a pattern
3339       match of the empty string within its split() function, and  when  using
3340       the  /g  modifier.  It  is  possible  to emulate Perl's behaviour after
3341       matching a null string by first trying the match again at the same off-
3342       set  with  PCRE_NOTEMPTY_ATSTART  and  PCRE_ANCHORED,  and then if that
3343       fails, by advancing the starting offset (see below) and trying an ordi-
3344       nary  match  again. There is some code that demonstrates how to do this
3345       in the pcredemo sample program. In the most general case, you  have  to
3346       check  to  see  if the newline convention recognizes CRLF as a newline,
3347       and if so, and the current character is CR followed by LF, advance  the
3348       starting offset by two characters instead of one.
3349
3350         PCRE_NO_START_OPTIMIZE
3351
3352       There  are a number of optimizations that pcre_exec() uses at the start
3353       of a match, in order to speed up the process. For  example,  if  it  is
3354       known that an unanchored match must start with a specific character, it
3355       searches the subject for that character, and fails  immediately  if  it
3356       cannot  find  it,  without actually running the main matching function.
3357       This means that a special item such as (*COMMIT) at the start of a pat-
3358       tern  is  not  considered until after a suitable starting point for the
3359       match has been found. Also, when callouts or (*MARK) items are in  use,
3360       these "start-up" optimizations can cause them to be skipped if the pat-
3361       tern is never actually used. The start-up optimizations are in effect a
3362       pre-scan of the subject that takes place before the pattern is run.
3363
3364       The  PCRE_NO_START_OPTIMIZE option disables the start-up optimizations,
3365       possibly causing performance to suffer,  but  ensuring  that  in  cases
3366       where  the  result is "no match", the callouts do occur, and that items
3367       such as (*COMMIT) and (*MARK) are considered at every possible starting
3368       position  in  the  subject  string. If PCRE_NO_START_OPTIMIZE is set at
3369       compile time,  it  cannot  be  unset  at  matching  time.  The  use  of
3370       PCRE_NO_START_OPTIMIZE  at  matching  time  (that  is,  passing  it  to
3371       pcre_exec()) disables JIT execution; in  this  situation,  matching  is
3372       always done using interpretively.
3373
3374       Setting  PCRE_NO_START_OPTIMIZE  can  change  the outcome of a matching
3375       operation.  Consider the pattern
3376
3377         (*COMMIT)ABC
3378
3379       When this is compiled, PCRE records the fact that a  match  must  start
3380       with  the  character  "A".  Suppose the subject string is "DEFABC". The
3381       start-up optimization scans along the subject, finds "A" and  runs  the
3382       first  match attempt from there. The (*COMMIT) item means that the pat-
3383       tern must match the current starting position, which in this  case,  it
3384       does.  However,  if  the  same match is run with PCRE_NO_START_OPTIMIZE
3385       set, the initial scan along the subject string  does  not  happen.  The
3386       first  match  attempt  is  run  starting  from "D" and when this fails,
3387       (*COMMIT) prevents any further matches  being  tried,  so  the  overall
3388       result  is  "no  match". If the pattern is studied, more start-up opti-
3389       mizations may be used. For example, a minimum length  for  the  subject
3390       may be recorded. Consider the pattern
3391
3392         (*MARK:A)(X|Y)
3393
3394       The  minimum  length  for  a  match is one character. If the subject is
3395       "ABC", there will be attempts to  match  "ABC",  "BC",  "C",  and  then
3396       finally  an empty string.  If the pattern is studied, the final attempt
3397       does not take place, because PCRE knows that the subject is too  short,
3398       and  so  the  (*MARK) is never encountered.  In this case, studying the
3399       pattern does not affect the overall match result, which  is  still  "no
3400       match", but it does affect the auxiliary information that is returned.
3401
3402         PCRE_NO_UTF8_CHECK
3403
3404       When PCRE_UTF8 is set at compile time, the validity of the subject as a
3405       UTF-8 string is automatically checked when pcre_exec() is  subsequently
3406       called.  The entire string is checked before any other processing takes
3407       place. The value of startoffset is  also  checked  to  ensure  that  it
3408       points  to  the start of a UTF-8 character. There is a discussion about
3409       the validity of UTF-8 strings in the pcreunicode page.  If  an  invalid
3410       sequence   of   bytes   is   found,   pcre_exec()   returns  the  error
3411       PCRE_ERROR_BADUTF8 or, if PCRE_PARTIAL_HARD is set and the problem is a
3412       truncated character at the end of the subject, PCRE_ERROR_SHORTUTF8. In
3413       both cases, information about the precise nature of the error may  also
3414       be  returned (see the descriptions of these errors in the section enti-
3415       tled Error return values from pcre_exec() below).  If startoffset  con-
3416       tains a value that does not point to the start of a UTF-8 character (or
3417       to the end of the subject), PCRE_ERROR_BADUTF8_OFFSET is returned.
3418
3419       If you already know that your subject is valid, and you  want  to  skip
3420       these    checks    for   performance   reasons,   you   can   set   the
3421       PCRE_NO_UTF8_CHECK option when calling pcre_exec(). You might  want  to
3422       do  this  for the second and subsequent calls to pcre_exec() if you are
3423       making repeated calls to find all  the  matches  in  a  single  subject
3424       string.  However,  you  should  be  sure  that the value of startoffset
3425       points to the start of a character (or the end of  the  subject).  When
3426       PCRE_NO_UTF8_CHECK is set, the effect of passing an invalid string as a
3427       subject or an invalid value of startoffset is undefined.  Your  program
3428       may crash or loop.
3429
3430         PCRE_PARTIAL_HARD
3431         PCRE_PARTIAL_SOFT
3432
3433       These  options turn on the partial matching feature. For backwards com-
3434       patibility, PCRE_PARTIAL is a synonym for PCRE_PARTIAL_SOFT. A  partial
3435       match  occurs if the end of the subject string is reached successfully,
3436       but there are not enough subject characters to complete the  match.  If
3437       this happens when PCRE_PARTIAL_SOFT (but not PCRE_PARTIAL_HARD) is set,
3438       matching continues by testing any remaining alternatives.  Only  if  no
3439       complete  match  can be found is PCRE_ERROR_PARTIAL returned instead of
3440       PCRE_ERROR_NOMATCH. In other words,  PCRE_PARTIAL_SOFT  says  that  the
3441       caller  is  prepared to handle a partial match, but only if no complete
3442       match can be found.
3443
3444       If PCRE_PARTIAL_HARD is set, it overrides  PCRE_PARTIAL_SOFT.  In  this
3445       case,  if  a  partial  match  is found, pcre_exec() immediately returns
3446       PCRE_ERROR_PARTIAL, without  considering  any  other  alternatives.  In
3447       other  words, when PCRE_PARTIAL_HARD is set, a partial match is consid-
3448       ered to be more important that an alternative complete match.
3449
3450       In both cases, the portion of the string that was  inspected  when  the
3451       partial match was found is set as the first matching string. There is a
3452       more detailed discussion of partial and  multi-segment  matching,  with
3453       examples, in the pcrepartial documentation.
3454
3455   The string to be matched by pcre_exec()
3456
3457       The  subject string is passed to pcre_exec() as a pointer in subject, a
3458       length in length, and a starting offset in startoffset. The  units  for
3459       length  and  startoffset  are  bytes for the 8-bit library, 16-bit data
3460       items for the 16-bit library, and 32-bit  data  items  for  the  32-bit
3461       library.
3462
3463       If  startoffset  is negative or greater than the length of the subject,
3464       pcre_exec() returns PCRE_ERROR_BADOFFSET. When the starting  offset  is
3465       zero,  the  search  for a match starts at the beginning of the subject,
3466       and this is by far the most common case. In UTF-8 or UTF-16  mode,  the
3467       offset  must  point to the start of a character, or the end of the sub-
3468       ject (in UTF-32 mode, one data unit equals one character, so  all  off-
3469       sets  are  valid).  Unlike  the pattern string, the subject may contain
3470       binary zeroes.
3471
3472       A non-zero starting offset is useful when searching for  another  match
3473       in  the same subject by calling pcre_exec() again after a previous suc-
3474       cess.  Setting startoffset differs from just passing over  a  shortened
3475       string  and  setting  PCRE_NOTBOL  in the case of a pattern that begins
3476       with any kind of lookbehind. For example, consider the pattern
3477
3478         \Biss\B
3479
3480       which finds occurrences of "iss" in the middle of  words.  (\B  matches
3481       only  if  the  current position in the subject is not a word boundary.)
3482       When applied to the string "Mississipi" the first call  to  pcre_exec()
3483       finds  the  first  occurrence. If pcre_exec() is called again with just
3484       the remainder of the subject,  namely  "issipi",  it  does  not  match,
3485       because \B is always false at the start of the subject, which is deemed
3486       to be a word boundary. However, if pcre_exec()  is  passed  the  entire
3487       string again, but with startoffset set to 4, it finds the second occur-
3488       rence of "iss" because it is able to look behind the starting point  to
3489       discover that it is preceded by a letter.
3490
3491       Finding  all  the  matches  in a subject is tricky when the pattern can
3492       match an empty string. It is possible to emulate Perl's /g behaviour by
3493       first   trying   the   match   again  at  the  same  offset,  with  the
3494       PCRE_NOTEMPTY_ATSTART and  PCRE_ANCHORED  options,  and  then  if  that
3495       fails,  advancing  the  starting  offset  and  trying an ordinary match
3496       again. There is some code that demonstrates how to do this in the pcre-
3497       demo sample program. In the most general case, you have to check to see
3498       if the newline convention recognizes CRLF as a newline, and if so,  and
3499       the current character is CR followed by LF, advance the starting offset
3500       by two characters instead of one.
3501
3502       If a non-zero starting offset is passed when the pattern  is  anchored,
3503       one attempt to match at the given offset is made. This can only succeed
3504       if the pattern does not require the match to be at  the  start  of  the
3505       subject.
3506
3507   How pcre_exec() returns captured substrings
3508
3509       In  general, a pattern matches a certain portion of the subject, and in
3510       addition, further substrings from the subject  may  be  picked  out  by
3511       parts  of  the  pattern.  Following the usage in Jeffrey Friedl's book,
3512       this is called "capturing" in what follows, and the  phrase  "capturing
3513       subpattern"  is  used for a fragment of a pattern that picks out a sub-
3514       string. PCRE supports several other kinds of  parenthesized  subpattern
3515       that do not cause substrings to be captured.
3516
3517       Captured substrings are returned to the caller via a vector of integers
3518       whose address is passed in ovector. The number of elements in the  vec-
3519       tor  is  passed in ovecsize, which must be a non-negative number. Note:
3520       this argument is NOT the size of ovector in bytes.
3521
3522       The first two-thirds of the vector is used to pass back  captured  sub-
3523       strings,  each  substring using a pair of integers. The remaining third
3524       of the vector is used as workspace by pcre_exec() while  matching  cap-
3525       turing  subpatterns, and is not available for passing back information.
3526       The number passed in ovecsize should always be a multiple of three.  If
3527       it is not, it is rounded down.
3528
3529       When  a  match  is successful, information about captured substrings is
3530       returned in pairs of integers, starting at the  beginning  of  ovector,
3531       and  continuing  up  to two-thirds of its length at the most. The first
3532       element of each pair is set to the offset of the first character  in  a
3533       substring,  and  the second is set to the offset of the first character
3534       after the end of a substring. These values are always  data  unit  off-
3535       sets,  even  in  UTF  mode. They are byte offsets in the 8-bit library,
3536       16-bit data item offsets in the 16-bit library, and  32-bit  data  item
3537       offsets in the 32-bit library. Note: they are not character counts.
3538
3539       The  first  pair  of  integers, ovector[0] and ovector[1], identify the
3540       portion of the subject string matched by the entire pattern.  The  next
3541       pair  is  used for the first capturing subpattern, and so on. The value
3542       returned by pcre_exec() is one more than the highest numbered pair that
3543       has  been  set.  For example, if two substrings have been captured, the
3544       returned value is 3. If there are no capturing subpatterns, the  return
3545       value from a successful match is 1, indicating that just the first pair
3546       of offsets has been set.
3547
3548       If a capturing subpattern is matched repeatedly, it is the last portion
3549       of the string that it matched that is returned.
3550
3551       If  the vector is too small to hold all the captured substring offsets,
3552       it is used as far as possible (up to two-thirds of its length), and the
3553       function  returns a value of zero. If neither the actual string matched
3554       nor any captured substrings are of interest, pcre_exec() may be  called
3555       with  ovector passed as NULL and ovecsize as zero. However, if the pat-
3556       tern contains back references and the ovector  is  not  big  enough  to
3557       remember  the related substrings, PCRE has to get additional memory for
3558       use during matching. Thus it is usually advisable to supply an  ovector
3559       of reasonable size.
3560
3561       There  are  some  cases where zero is returned (indicating vector over-
3562       flow) when in fact the vector is exactly the right size for  the  final
3563       match. For example, consider the pattern
3564
3565         (a)(?:(b)c|bd)
3566
3567       If  a  vector of 6 elements (allowing for only 1 captured substring) is
3568       given with subject string "abd", pcre_exec() will try to set the second
3569       captured string, thereby recording a vector overflow, before failing to
3570       match "c" and backing up  to  try  the  second  alternative.  The  zero
3571       return,  however,  does  correctly  indicate that the maximum number of
3572       slots (namely 2) have been filled. In similar cases where there is tem-
3573       porary  overflow,  but  the final number of used slots is actually less
3574       than the maximum, a non-zero value is returned.
3575
3576       The pcre_fullinfo() function can be used to find out how many capturing
3577       subpatterns  there  are  in  a  compiled pattern. The smallest size for
3578       ovector that will allow for n captured substrings, in addition  to  the
3579       offsets of the substring matched by the whole pattern, is (n+1)*3.
3580
3581       It  is  possible for capturing subpattern number n+1 to match some part
3582       of the subject when subpattern n has not been used at all. For example,
3583       if  the  string  "abc"  is  matched against the pattern (a|(z))(bc) the
3584       return from the function is 4, and subpatterns 1 and 3 are matched, but
3585       2  is  not.  When  this happens, both values in the offset pairs corre-
3586       sponding to unused subpatterns are set to -1.
3587
3588       Offset values that correspond to unused subpatterns at the end  of  the
3589       expression  are  also  set  to  -1. For example, if the string "abc" is
3590       matched against the pattern (abc)(x(yz)?)? subpatterns 2 and 3 are  not
3591       matched.  The  return  from the function is 2, because the highest used
3592       capturing subpattern number is 1, and the offsets for  for  the  second
3593       and  third  capturing subpatterns (assuming the vector is large enough,
3594       of course) are set to -1.
3595
3596       Note: Elements in the first two-thirds of ovector that  do  not  corre-
3597       spond  to  capturing parentheses in the pattern are never changed. That
3598       is, if a pattern contains n capturing parentheses, no more  than  ovec-
3599       tor[0]  to ovector[2n+1] are set by pcre_exec(). The other elements (in
3600       the first two-thirds) retain whatever values they previously had.
3601
3602       Some convenience functions are provided  for  extracting  the  captured
3603       substrings as separate strings. These are described below.
3604
3605   Error return values from pcre_exec()
3606
3607       If  pcre_exec()  fails, it returns a negative number. The following are
3608       defined in the header file:
3609
3610         PCRE_ERROR_NOMATCH        (-1)
3611
3612       The subject string did not match the pattern.
3613
3614         PCRE_ERROR_NULL           (-2)
3615
3616       Either code or subject was passed as NULL,  or  ovector  was  NULL  and
3617       ovecsize was not zero.
3618
3619         PCRE_ERROR_BADOPTION      (-3)
3620
3621       An unrecognized bit was set in the options argument.
3622
3623         PCRE_ERROR_BADMAGIC       (-4)
3624
3625       PCRE  stores a 4-byte "magic number" at the start of the compiled code,
3626       to catch the case when it is passed a junk pointer and to detect when a
3627       pattern that was compiled in an environment of one endianness is run in
3628       an environment with the other endianness. This is the error  that  PCRE
3629       gives when the magic number is not present.
3630
3631         PCRE_ERROR_UNKNOWN_OPCODE (-5)
3632
3633       While running the pattern match, an unknown item was encountered in the
3634       compiled pattern. This error could be caused by a bug  in  PCRE  or  by
3635       overwriting of the compiled pattern.
3636
3637         PCRE_ERROR_NOMEMORY       (-6)
3638
3639       If  a  pattern contains back references, but the ovector that is passed
3640       to pcre_exec() is not big enough to remember the referenced substrings,
3641       PCRE  gets  a  block of memory at the start of matching to use for this
3642       purpose. If the call via pcre_malloc() fails, this error is given.  The
3643       memory is automatically freed at the end of matching.
3644
3645       This  error  is also given if pcre_stack_malloc() fails in pcre_exec().
3646       This can happen only when PCRE has been compiled with  --disable-stack-
3647       for-recursion.
3648
3649         PCRE_ERROR_NOSUBSTRING    (-7)
3650
3651       This  error is used by the pcre_copy_substring(), pcre_get_substring(),
3652       and  pcre_get_substring_list()  functions  (see  below).  It  is  never
3653       returned by pcre_exec().
3654
3655         PCRE_ERROR_MATCHLIMIT     (-8)
3656
3657       The  backtracking  limit,  as  specified  by the match_limit field in a
3658       pcre_extra structure (or defaulted) was reached.  See  the  description
3659       above.
3660
3661         PCRE_ERROR_CALLOUT        (-9)
3662
3663       This error is never generated by pcre_exec() itself. It is provided for
3664       use by callout functions that want to yield a distinctive  error  code.
3665       See the pcrecallout documentation for details.
3666
3667         PCRE_ERROR_BADUTF8        (-10)
3668
3669       A  string  that contains an invalid UTF-8 byte sequence was passed as a
3670       subject, and the PCRE_NO_UTF8_CHECK option was not set. If the size  of
3671       the  output  vector  (ovecsize)  is  at least 2, the byte offset to the
3672       start of the the invalid UTF-8 character is placed in  the  first  ele-
3673       ment,  and  a  reason  code is placed in the second element. The reason
3674       codes are listed in the following section.  For backward compatibility,
3675       if  PCRE_PARTIAL_HARD is set and the problem is a truncated UTF-8 char-
3676       acter  at  the  end  of  the   subject   (reason   codes   1   to   5),
3677       PCRE_ERROR_SHORTUTF8 is returned instead of PCRE_ERROR_BADUTF8.
3678
3679         PCRE_ERROR_BADUTF8_OFFSET (-11)
3680
3681       The  UTF-8  byte  sequence that was passed as a subject was checked and
3682       found to be valid (the PCRE_NO_UTF8_CHECK option was not set), but  the
3683       value  of startoffset did not point to the beginning of a UTF-8 charac-
3684       ter or the end of the subject.
3685
3686         PCRE_ERROR_PARTIAL        (-12)
3687
3688       The subject string did not match, but it did match partially.  See  the
3689       pcrepartial documentation for details of partial matching.
3690
3691         PCRE_ERROR_BADPARTIAL     (-13)
3692
3693       This  code  is  no  longer  in  use.  It was formerly returned when the
3694       PCRE_PARTIAL option was used with a compiled pattern  containing  items
3695       that  were  not  supported  for  partial  matching.  From  release 8.00
3696       onwards, there are no restrictions on partial matching.
3697
3698         PCRE_ERROR_INTERNAL       (-14)
3699
3700       An unexpected internal error has occurred. This error could  be  caused
3701       by a bug in PCRE or by overwriting of the compiled pattern.
3702
3703         PCRE_ERROR_BADCOUNT       (-15)
3704
3705       This error is given if the value of the ovecsize argument is negative.
3706
3707         PCRE_ERROR_RECURSIONLIMIT (-21)
3708
3709       The internal recursion limit, as specified by the match_limit_recursion
3710       field in a pcre_extra structure (or defaulted)  was  reached.  See  the
3711       description above.
3712
3713         PCRE_ERROR_BADNEWLINE     (-23)
3714
3715       An invalid combination of PCRE_NEWLINE_xxx options was given.
3716
3717         PCRE_ERROR_BADOFFSET      (-24)
3718
3719       The value of startoffset was negative or greater than the length of the
3720       subject, that is, the value in length.
3721
3722         PCRE_ERROR_SHORTUTF8      (-25)
3723
3724       This error is returned instead of PCRE_ERROR_BADUTF8 when  the  subject
3725       string  ends with a truncated UTF-8 character and the PCRE_PARTIAL_HARD
3726       option is set.  Information  about  the  failure  is  returned  as  for
3727       PCRE_ERROR_BADUTF8.  It  is in fact sufficient to detect this case, but
3728       this special error code for PCRE_PARTIAL_HARD precedes the  implementa-
3729       tion  of returned information; it is retained for backwards compatibil-
3730       ity.
3731
3732         PCRE_ERROR_RECURSELOOP    (-26)
3733
3734       This error is returned when pcre_exec() detects a recursion loop within
3735       the  pattern. Specifically, it means that either the whole pattern or a
3736       subpattern has been called recursively for the second time at the  same
3737       position in the subject string. Some simple patterns that might do this
3738       are detected and faulted at compile time, but more  complicated  cases,
3739       in particular mutual recursions between two different subpatterns, can-
3740       not be detected until run time.
3741
3742         PCRE_ERROR_JIT_STACKLIMIT (-27)
3743
3744       This error is returned when a pattern  that  was  successfully  studied
3745       using  a  JIT compile option is being matched, but the memory available
3746       for the just-in-time processing stack is  not  large  enough.  See  the
3747       pcrejit documentation for more details.
3748
3749         PCRE_ERROR_BADMODE        (-28)
3750
3751       This error is given if a pattern that was compiled by the 8-bit library
3752       is passed to a 16-bit or 32-bit library function, or vice versa.
3753
3754         PCRE_ERROR_BADENDIANNESS  (-29)
3755
3756       This error is given if  a  pattern  that  was  compiled  and  saved  is
3757       reloaded  on  a  host  with  different endianness. The utility function
3758       pcre_pattern_to_host_byte_order() can be used to convert such a pattern
3759       so that it runs on the new host.
3760
3761         PCRE_ERROR_JIT_BADOPTION
3762
3763       This  error  is  returned  when a pattern that was successfully studied
3764       using a JIT compile option is being  matched,  but  the  matching  mode
3765       (partial  or complete match) does not correspond to any JIT compilation
3766       mode. When the JIT fast path function is used, this error may  be  also
3767       given  for  invalid  options.  See  the  pcrejit documentation for more
3768       details.
3769
3770         PCRE_ERROR_BADLENGTH      (-32)
3771
3772       This error is given if pcre_exec() is called with a negative value  for
3773       the length argument.
3774
3775       Error numbers -16 to -20, -22, and 30 are not used by pcre_exec().
3776
3777   Reason codes for invalid UTF-8 strings
3778
3779       This  section  applies  only  to  the  8-bit library. The corresponding
3780       information for the 16-bit and 32-bit libraries is given in the  pcre16
3781       and pcre32 pages.
3782
3783       When pcre_exec() returns either PCRE_ERROR_BADUTF8 or PCRE_ERROR_SHORT-
3784       UTF8, and the size of the output vector (ovecsize) is at least  2,  the
3785       offset  of  the  start  of the invalid UTF-8 character is placed in the
3786       first output vector element (ovector[0]) and a reason code is placed in
3787       the  second  element  (ovector[1]). The reason codes are given names in
3788       the pcre.h header file:
3789
3790         PCRE_UTF8_ERR1
3791         PCRE_UTF8_ERR2
3792         PCRE_UTF8_ERR3
3793         PCRE_UTF8_ERR4
3794         PCRE_UTF8_ERR5
3795
3796       The string ends with a truncated UTF-8 character;  the  code  specifies
3797       how  many bytes are missing (1 to 5). Although RFC 3629 restricts UTF-8
3798       characters to be no longer than 4 bytes, the  encoding  scheme  (origi-
3799       nally  defined  by  RFC  2279)  allows  for  up to 6 bytes, and this is
3800       checked first; hence the possibility of 4 or 5 missing bytes.
3801
3802         PCRE_UTF8_ERR6
3803         PCRE_UTF8_ERR7
3804         PCRE_UTF8_ERR8
3805         PCRE_UTF8_ERR9
3806         PCRE_UTF8_ERR10
3807
3808       The two most significant bits of the 2nd, 3rd, 4th, 5th, or 6th byte of
3809       the  character  do  not have the binary value 0b10 (that is, either the
3810       most significant bit is 0, or the next bit is 1).
3811
3812         PCRE_UTF8_ERR11
3813         PCRE_UTF8_ERR12
3814
3815       A character that is valid by the RFC 2279 rules is either 5 or 6  bytes
3816       long; these code points are excluded by RFC 3629.
3817
3818         PCRE_UTF8_ERR13
3819
3820       A  4-byte character has a value greater than 0x10fff; these code points
3821       are excluded by RFC 3629.
3822
3823         PCRE_UTF8_ERR14
3824
3825       A 3-byte character has a value in the  range  0xd800  to  0xdfff;  this
3826       range  of code points are reserved by RFC 3629 for use with UTF-16, and
3827       so are excluded from UTF-8.
3828
3829         PCRE_UTF8_ERR15
3830         PCRE_UTF8_ERR16
3831         PCRE_UTF8_ERR17
3832         PCRE_UTF8_ERR18
3833         PCRE_UTF8_ERR19
3834
3835       A 2-, 3-, 4-, 5-, or 6-byte character is "overlong", that is, it  codes
3836       for  a  value that can be represented by fewer bytes, which is invalid.
3837       For example, the two bytes 0xc0, 0xae give the value 0x2e,  whose  cor-
3838       rect coding uses just one byte.
3839
3840         PCRE_UTF8_ERR20
3841
3842       The two most significant bits of the first byte of a character have the
3843       binary value 0b10 (that is, the most significant bit is 1 and the  sec-
3844       ond  is  0). Such a byte can only validly occur as the second or subse-
3845       quent byte of a multi-byte character.
3846
3847         PCRE_UTF8_ERR21
3848
3849       The first byte of a character has the value 0xfe or 0xff. These  values
3850       can never occur in a valid UTF-8 string.
3851
3852         PCRE_UTF8_ERR22
3853
3854       This  error  code  was  formerly  used when the presence of a so-called
3855       "non-character" caused an error. Unicode corrigendum #9 makes it  clear
3856       that  such  characters should not cause a string to be rejected, and so
3857       this code is no longer in use and is never returned.
3858
3859
3860EXTRACTING CAPTURED SUBSTRINGS BY NUMBER
3861
3862       int pcre_copy_substring(const char *subject, int *ovector,
3863            int stringcount, int stringnumber, char *buffer,
3864            int buffersize);
3865
3866       int pcre_get_substring(const char *subject, int *ovector,
3867            int stringcount, int stringnumber,
3868            const char **stringptr);
3869
3870       int pcre_get_substring_list(const char *subject,
3871            int *ovector, int stringcount, const char ***listptr);
3872
3873       Captured substrings can be  accessed  directly  by  using  the  offsets
3874       returned  by  pcre_exec()  in  ovector.  For convenience, the functions
3875       pcre_copy_substring(),    pcre_get_substring(),    and    pcre_get_sub-
3876       string_list()  are  provided for extracting captured substrings as new,
3877       separate, zero-terminated strings. These functions identify  substrings
3878       by  number.  The  next section describes functions for extracting named
3879       substrings.
3880
3881       A substring that contains a binary zero is correctly extracted and  has
3882       a  further zero added on the end, but the result is not, of course, a C
3883       string.  However, you can process such a string  by  referring  to  the
3884       length  that  is  returned  by  pcre_copy_substring() and pcre_get_sub-
3885       string().  Unfortunately, the interface to pcre_get_substring_list() is
3886       not  adequate for handling strings containing binary zeros, because the
3887       end of the final string is not independently indicated.
3888
3889       The first three arguments are the same for all  three  of  these  func-
3890       tions:  subject  is  the subject string that has just been successfully
3891       matched, ovector is a pointer to the vector of integer offsets that was
3892       passed to pcre_exec(), and stringcount is the number of substrings that
3893       were captured by the match, including the substring  that  matched  the
3894       entire regular expression. This is the value returned by pcre_exec() if
3895       it is greater than zero. If pcre_exec() returned zero, indicating  that
3896       it  ran out of space in ovector, the value passed as stringcount should
3897       be the number of elements in the vector divided by three.
3898
3899       The functions pcre_copy_substring() and pcre_get_substring() extract  a
3900       single  substring,  whose  number  is given as stringnumber. A value of
3901       zero extracts the substring that matched the  entire  pattern,  whereas
3902       higher  values  extract  the  captured  substrings.  For pcre_copy_sub-
3903       string(), the string is placed in buffer,  whose  length  is  given  by
3904       buffersize,  while  for  pcre_get_substring()  a new block of memory is
3905       obtained via pcre_malloc, and its address is  returned  via  stringptr.
3906       The  yield  of  the function is the length of the string, not including
3907       the terminating zero, or one of these error codes:
3908
3909         PCRE_ERROR_NOMEMORY       (-6)
3910
3911       The buffer was too small for pcre_copy_substring(), or the  attempt  to
3912       get memory failed for pcre_get_substring().
3913
3914         PCRE_ERROR_NOSUBSTRING    (-7)
3915
3916       There is no substring whose number is stringnumber.
3917
3918       The  pcre_get_substring_list()  function  extracts  all  available sub-
3919       strings and builds a list of pointers to them. All this is  done  in  a
3920       single block of memory that is obtained via pcre_malloc. The address of
3921       the memory block is returned via listptr, which is also  the  start  of
3922       the  list  of  string pointers. The end of the list is marked by a NULL
3923       pointer. The yield of the function is zero if all  went  well,  or  the
3924       error code
3925
3926         PCRE_ERROR_NOMEMORY       (-6)
3927
3928       if the attempt to get the memory block failed.
3929
3930       When  any of these functions encounter a substring that is unset, which
3931       can happen when capturing subpattern number n+1 matches  some  part  of
3932       the  subject, but subpattern n has not been used at all, they return an
3933       empty string. This can be distinguished from a genuine zero-length sub-
3934       string  by inspecting the appropriate offset in ovector, which is nega-
3935       tive for unset substrings.
3936
3937       The two convenience functions pcre_free_substring() and  pcre_free_sub-
3938       string_list()  can  be  used  to free the memory returned by a previous
3939       call  of  pcre_get_substring()  or  pcre_get_substring_list(),  respec-
3940       tively.  They  do  nothing  more  than  call the function pointed to by
3941       pcre_free, which of course could be called directly from a  C  program.
3942       However,  PCRE is used in some situations where it is linked via a spe-
3943       cial  interface  to  another  programming  language  that  cannot   use
3944       pcre_free  directly;  it is for these cases that the functions are pro-
3945       vided.
3946
3947
3948EXTRACTING CAPTURED SUBSTRINGS BY NAME
3949
3950       int pcre_get_stringnumber(const pcre *code,
3951            const char *name);
3952
3953       int pcre_copy_named_substring(const pcre *code,
3954            const char *subject, int *ovector,
3955            int stringcount, const char *stringname,
3956            char *buffer, int buffersize);
3957
3958       int pcre_get_named_substring(const pcre *code,
3959            const char *subject, int *ovector,
3960            int stringcount, const char *stringname,
3961            const char **stringptr);
3962
3963       To extract a substring by name, you first have to find associated  num-
3964       ber.  For example, for this pattern
3965
3966         (a+)b(?<xxx>\d+)...
3967
3968       the number of the subpattern called "xxx" is 2. If the name is known to
3969       be unique (PCRE_DUPNAMES was not set), you can find the number from the
3970       name by calling pcre_get_stringnumber(). The first argument is the com-
3971       piled pattern, and the second is the name. The yield of the function is
3972       the  subpattern  number,  or PCRE_ERROR_NOSUBSTRING (-7) if there is no
3973       subpattern of that name.
3974
3975       Given the number, you can extract the substring directly, or use one of
3976       the functions described in the previous section. For convenience, there
3977       are also two functions that do the whole job.
3978
3979       Most   of   the   arguments    of    pcre_copy_named_substring()    and
3980       pcre_get_named_substring()  are  the  same  as  those for the similarly
3981       named functions that extract by number. As these are described  in  the
3982       previous  section,  they  are not re-described here. There are just two
3983       differences:
3984
3985       First, instead of a substring number, a substring name is  given.  Sec-
3986       ond, there is an extra argument, given at the start, which is a pointer
3987       to the compiled pattern. This is needed in order to gain access to  the
3988       name-to-number translation table.
3989
3990       These  functions call pcre_get_stringnumber(), and if it succeeds, they
3991       then call pcre_copy_substring() or pcre_get_substring(),  as  appropri-
3992       ate.  NOTE:  If PCRE_DUPNAMES is set and there are duplicate names, the
3993       behaviour may not be what you want (see the next section).
3994
3995       Warning: If the pattern uses the (?| feature to set up multiple subpat-
3996       terns  with  the  same number, as described in the section on duplicate
3997       subpattern numbers in the pcrepattern page, you  cannot  use  names  to
3998       distinguish  the  different subpatterns, because names are not included
3999       in the compiled code. The matching process uses only numbers. For  this
4000       reason,  the  use of different names for subpatterns of the same number
4001       causes an error at compile time.
4002
4003
4004DUPLICATE SUBPATTERN NAMES
4005
4006       int pcre_get_stringtable_entries(const pcre *code,
4007            const char *name, char **first, char **last);
4008
4009       When a pattern is compiled with the  PCRE_DUPNAMES  option,  names  for
4010       subpatterns  are not required to be unique. (Duplicate names are always
4011       allowed for subpatterns with the same number, created by using the  (?|
4012       feature.  Indeed,  if  such subpatterns are named, they are required to
4013       use the same names.)
4014
4015       Normally, patterns with duplicate names are such that in any one match,
4016       only  one of the named subpatterns participates. An example is shown in
4017       the pcrepattern documentation.
4018
4019       When   duplicates   are   present,   pcre_copy_named_substring()    and
4020       pcre_get_named_substring()  return the first substring corresponding to
4021       the given name that is set. If  none  are  set,  PCRE_ERROR_NOSUBSTRING
4022       (-7)  is  returned;  no  data  is returned. The pcre_get_stringnumber()
4023       function returns one of the numbers that are associated with the  name,
4024       but it is not defined which it is.
4025
4026       If  you want to get full details of all captured substrings for a given
4027       name, you must use  the  pcre_get_stringtable_entries()  function.  The
4028       first argument is the compiled pattern, and the second is the name. The
4029       third and fourth are pointers to variables which  are  updated  by  the
4030       function. After it has run, they point to the first and last entries in
4031       the name-to-number table  for  the  given  name.  The  function  itself
4032       returns  the  length  of  each entry, or PCRE_ERROR_NOSUBSTRING (-7) if
4033       there are none. The format of the table is described above in the  sec-
4034       tion  entitled  Information about a pattern above.  Given all the rele-
4035       vant entries for the name, you can extract each of their  numbers,  and
4036       hence the captured data, if any.
4037
4038
4039FINDING ALL POSSIBLE MATCHES
4040
4041       The  traditional  matching  function  uses a similar algorithm to Perl,
4042       which stops when it finds the first match, starting at a given point in
4043       the  subject.  If you want to find all possible matches, or the longest
4044       possible match, consider using the alternative matching  function  (see
4045       below)  instead.  If you cannot use the alternative function, but still
4046       need to find all possible matches, you can kludge it up by  making  use
4047       of the callout facility, which is described in the pcrecallout documen-
4048       tation.
4049
4050       What you have to do is to insert a callout right at the end of the pat-
4051       tern.   When your callout function is called, extract and save the cur-
4052       rent matched substring. Then return  1,  which  forces  pcre_exec()  to
4053       backtrack  and  try other alternatives. Ultimately, when it runs out of
4054       matches, pcre_exec() will yield PCRE_ERROR_NOMATCH.
4055
4056
4057OBTAINING AN ESTIMATE OF STACK USAGE
4058
4059       Matching certain patterns using pcre_exec() can use a  lot  of  process
4060       stack,  which  in  certain  environments can be rather limited in size.
4061       Some users find it helpful to have an estimate of the amount  of  stack
4062       that  is  used  by  pcre_exec(),  to help them set recursion limits, as
4063       described in the pcrestack documentation. The estimate that  is  output
4064       by pcretest when called with the -m and -C options is obtained by call-
4065       ing pcre_exec with the values NULL, NULL, NULL, -999, and -999 for  its
4066       first five arguments.
4067
4068       Normally,  if  its  first  argument  is  NULL,  pcre_exec() immediately
4069       returns the negative error code PCRE_ERROR_NULL, but with this  special
4070       combination  of  arguments,  it returns instead a negative number whose
4071       absolute value is the approximate stack frame size in bytes.  (A  nega-
4072       tive  number  is  used so that it is clear that no match has happened.)
4073       The value is approximate because in  some  cases,  recursive  calls  to
4074       pcre_exec() occur when there are one or two additional variables on the
4075       stack.
4076
4077       If PCRE has been compiled to use the heap  instead  of  the  stack  for
4078       recursion,  the  value  returned  is  the  size  of  each block that is
4079       obtained from the heap.
4080
4081
4082MATCHING A PATTERN: THE ALTERNATIVE FUNCTION
4083
4084       int pcre_dfa_exec(const pcre *code, const pcre_extra *extra,
4085            const char *subject, int length, int startoffset,
4086            int options, int *ovector, int ovecsize,
4087            int *workspace, int wscount);
4088
4089       The function pcre_dfa_exec()  is  called  to  match  a  subject  string
4090       against  a  compiled pattern, using a matching algorithm that scans the
4091       subject string just once, and does not backtrack.  This  has  different
4092       characteristics  to  the  normal  algorithm, and is not compatible with
4093       Perl. Some of the features of PCRE patterns are not  supported.  Never-
4094       theless,  there are times when this kind of matching can be useful. For
4095       a discussion of the two matching algorithms, and  a  list  of  features
4096       that  pcre_dfa_exec() does not support, see the pcrematching documenta-
4097       tion.
4098
4099       The arguments for the pcre_dfa_exec() function  are  the  same  as  for
4100       pcre_exec(), plus two extras. The ovector argument is used in a differ-
4101       ent way, and this is described below. The other  common  arguments  are
4102       used  in  the  same way as for pcre_exec(), so their description is not
4103       repeated here.
4104
4105       The two additional arguments provide workspace for  the  function.  The
4106       workspace  vector  should  contain at least 20 elements. It is used for
4107       keeping  track  of  multiple  paths  through  the  pattern  tree.  More
4108       workspace  will  be  needed for patterns and subjects where there are a
4109       lot of potential matches.
4110
4111       Here is an example of a simple call to pcre_dfa_exec():
4112
4113         int rc;
4114         int ovector[10];
4115         int wspace[20];
4116         rc = pcre_dfa_exec(
4117           re,             /* result of pcre_compile() */
4118           NULL,           /* we didn't study the pattern */
4119           "some string",  /* the subject string */
4120           11,             /* the length of the subject string */
4121           0,              /* start at offset 0 in the subject */
4122           0,              /* default options */
4123           ovector,        /* vector of integers for substring information */
4124           10,             /* number of elements (NOT size in bytes) */
4125           wspace,         /* working space vector */
4126           20);            /* number of elements (NOT size in bytes) */
4127
4128   Option bits for pcre_dfa_exec()
4129
4130       The unused bits of the options argument  for  pcre_dfa_exec()  must  be
4131       zero.  The  only  bits  that  may  be  set are PCRE_ANCHORED, PCRE_NEW-
4132       LINE_xxx,        PCRE_NOTBOL,        PCRE_NOTEOL,        PCRE_NOTEMPTY,
4133       PCRE_NOTEMPTY_ATSTART,       PCRE_NO_UTF8_CHECK,      PCRE_BSR_ANYCRLF,
4134       PCRE_BSR_UNICODE, PCRE_NO_START_OPTIMIZE, PCRE_PARTIAL_HARD,  PCRE_PAR-
4135       TIAL_SOFT,  PCRE_DFA_SHORTEST,  and PCRE_DFA_RESTART.  All but the last
4136       four of these are  exactly  the  same  as  for  pcre_exec(),  so  their
4137       description is not repeated here.
4138
4139         PCRE_PARTIAL_HARD
4140         PCRE_PARTIAL_SOFT
4141
4142       These  have the same general effect as they do for pcre_exec(), but the
4143       details are slightly  different.  When  PCRE_PARTIAL_HARD  is  set  for
4144       pcre_dfa_exec(),  it  returns PCRE_ERROR_PARTIAL if the end of the sub-
4145       ject is reached and there is still at least  one  matching  possibility
4146       that requires additional characters. This happens even if some complete
4147       matches have also been found. When PCRE_PARTIAL_SOFT is set, the return
4148       code PCRE_ERROR_NOMATCH is converted into PCRE_ERROR_PARTIAL if the end
4149       of the subject is reached, there have been  no  complete  matches,  but
4150       there  is  still  at least one matching possibility. The portion of the
4151       string that was inspected when the longest partial match was  found  is
4152       set  as  the  first  matching  string  in  both cases.  There is a more
4153       detailed discussion of partial and multi-segment matching,  with  exam-
4154       ples, in the pcrepartial documentation.
4155
4156         PCRE_DFA_SHORTEST
4157
4158       Setting  the  PCRE_DFA_SHORTEST option causes the matching algorithm to
4159       stop as soon as it has found one match. Because of the way the alterna-
4160       tive  algorithm  works, this is necessarily the shortest possible match
4161       at the first possible matching point in the subject string.
4162
4163         PCRE_DFA_RESTART
4164
4165       When pcre_dfa_exec() returns a partial match, it is possible to call it
4166       again,  with  additional  subject characters, and have it continue with
4167       the same match. The PCRE_DFA_RESTART option requests this action;  when
4168       it  is  set,  the workspace and wscount options must reference the same
4169       vector as before because data about the match so far is  left  in  them
4170       after a partial match. There is more discussion of this facility in the
4171       pcrepartial documentation.
4172
4173   Successful returns from pcre_dfa_exec()
4174
4175       When pcre_dfa_exec() succeeds, it may have matched more than  one  sub-
4176       string in the subject. Note, however, that all the matches from one run
4177       of the function start at the same point in  the  subject.  The  shorter
4178       matches  are all initial substrings of the longer matches. For example,
4179       if the pattern
4180
4181         <.*>
4182
4183       is matched against the string
4184
4185         This is <something> <something else> <something further> no more
4186
4187       the three matched strings are
4188
4189         <something>
4190         <something> <something else>
4191         <something> <something else> <something further>
4192
4193       On success, the yield of the function is a number  greater  than  zero,
4194       which  is  the  number of matched substrings. The substrings themselves
4195       are returned in ovector. Each string uses two elements;  the  first  is
4196       the  offset  to  the start, and the second is the offset to the end. In
4197       fact, all the strings have the same start  offset.  (Space  could  have
4198       been  saved by giving this only once, but it was decided to retain some
4199       compatibility with the way pcre_exec() returns data,  even  though  the
4200       meaning of the strings is different.)
4201
4202       The strings are returned in reverse order of length; that is, the long-
4203       est matching string is given first. If there were too many  matches  to
4204       fit  into ovector, the yield of the function is zero, and the vector is
4205       filled with the longest matches.  Unlike  pcre_exec(),  pcre_dfa_exec()
4206       can use the entire ovector for returning matched strings.
4207
4208       NOTE:  PCRE's  "auto-possessification"  optimization usually applies to
4209       character repeats at the end of a pattern (as well as internally).  For
4210       example,  the  pattern "a\d+" is compiled as if it were "a\d++" because
4211       there is no point even considering the possibility of backtracking into
4212       the  repeated digits. For DFA matching, this means that only one possi-
4213       ble match is found. If you really do  want  multiple  matches  in  such
4214       cases,   either   use   an   ungreedy   repeat  ("a\d+?")  or  set  the
4215       PCRE_NO_AUTO_POSSESS option when compiling.
4216
4217   Error returns from pcre_dfa_exec()
4218
4219       The pcre_dfa_exec() function returns a negative number when  it  fails.
4220       Many  of  the  errors  are  the  same as for pcre_exec(), and these are
4221       described above.  There are in addition the following errors  that  are
4222       specific to pcre_dfa_exec():
4223
4224         PCRE_ERROR_DFA_UITEM      (-16)
4225
4226       This  return is given if pcre_dfa_exec() encounters an item in the pat-
4227       tern that it does not support, for instance, the use of \C  or  a  back
4228       reference.
4229
4230         PCRE_ERROR_DFA_UCOND      (-17)
4231
4232       This  return  is  given  if pcre_dfa_exec() encounters a condition item
4233       that uses a back reference for the condition, or a test  for  recursion
4234       in a specific group. These are not supported.
4235
4236         PCRE_ERROR_DFA_UMLIMIT    (-18)
4237
4238       This  return  is given if pcre_dfa_exec() is called with an extra block
4239       that contains a setting of  the  match_limit  or  match_limit_recursion
4240       fields.  This  is  not  supported (these fields are meaningless for DFA
4241       matching).
4242
4243         PCRE_ERROR_DFA_WSSIZE     (-19)
4244
4245       This return is given if  pcre_dfa_exec()  runs  out  of  space  in  the
4246       workspace vector.
4247
4248         PCRE_ERROR_DFA_RECURSE    (-20)
4249
4250       When  a  recursive subpattern is processed, the matching function calls
4251       itself recursively, using private vectors for  ovector  and  workspace.
4252       This  error  is  given  if  the output vector is not large enough. This
4253       should be extremely rare, as a vector of size 1000 is used.
4254
4255         PCRE_ERROR_DFA_BADRESTART (-30)
4256
4257       When pcre_dfa_exec() is called with the PCRE_DFA_RESTART  option,  some
4258       plausibility  checks  are  made on the contents of the workspace, which
4259       should contain data about the previous partial match. If any  of  these
4260       checks fail, this error is given.
4261
4262
4263SEE ALSO
4264
4265       pcre16(3),   pcre32(3),  pcrebuild(3),  pcrecallout(3),  pcrecpp(3)(3),
4266       pcrematching(3), pcrepartial(3), pcreposix(3), pcreprecompile(3), pcre-
4267       sample(3), pcrestack(3).
4268
4269
4270AUTHOR
4271
4272       Philip Hazel
4273       University Computing Service
4274       Cambridge CB2 3QH, England.
4275
4276
4277REVISION
4278
4279       Last updated: 09 February 2014
4280       Copyright (c) 1997-2014 University of Cambridge.
4281------------------------------------------------------------------------------
4282
4283
4284PCRECALLOUT(3)             Library Functions Manual             PCRECALLOUT(3)
4285
4286
4287
4288NAME
4289       PCRE - Perl-compatible regular expressions
4290
4291SYNOPSIS
4292
4293       #include <pcre.h>
4294
4295       int (*pcre_callout)(pcre_callout_block *);
4296
4297       int (*pcre16_callout)(pcre16_callout_block *);
4298
4299       int (*pcre32_callout)(pcre32_callout_block *);
4300
4301
4302DESCRIPTION
4303
4304       PCRE provides a feature called "callout", which is a means of temporar-
4305       ily passing control to the caller of PCRE  in  the  middle  of  pattern
4306       matching.  The  caller of PCRE provides an external function by putting
4307       its entry point in the global variable pcre_callout (pcre16_callout for
4308       the 16-bit library, pcre32_callout for the 32-bit library). By default,
4309       this variable contains NULL, which disables all calling out.
4310
4311       Within a regular expression, (?C) indicates the  points  at  which  the
4312       external  function  is  to  be  called. Different callout points can be
4313       identified by putting a number less than 256 after the  letter  C.  The
4314       default  value  is  zero.   For  example,  this pattern has two callout
4315       points:
4316
4317         (?C1)abc(?C2)def
4318
4319       If the PCRE_AUTO_CALLOUT option bit is set when a pattern is  compiled,
4320       PCRE  automatically  inserts callouts, all with number 255, before each
4321       item in the pattern. For example, if PCRE_AUTO_CALLOUT is used with the
4322       pattern
4323
4324         A(\d{2}|--)
4325
4326       it is processed as if it were
4327
4328       (?C255)A(?C255)((?C255)\d{2}(?C255)|(?C255)-(?C255)-(?C255))(?C255)
4329
4330       Notice  that  there  is a callout before and after each parenthesis and
4331       alternation bar. If the pattern contains a conditional group whose con-
4332       dition  is  an  assertion, an automatic callout is inserted immediately
4333       before the condition. Such a callout may also be  inserted  explicitly,
4334       for example:
4335
4336         (?(?C9)(?=a)ab|de)
4337
4338       This  applies only to assertion conditions (because they are themselves
4339       independent groups).
4340
4341       Automatic callouts can be used for tracking  the  progress  of  pattern
4342       matching.   The pcretest program has a pattern qualifier (/C) that sets
4343       automatic callouts; when it is used, the output indicates how the  pat-
4344       tern  is  being matched. This is useful information when you are trying
4345       to optimize the performance of a particular pattern.
4346
4347
4348MISSING CALLOUTS
4349
4350       You should be aware that, because of optimizations in the way PCRE com-
4351       piles and matches patterns, callouts sometimes do not happen exactly as
4352       you might expect.
4353
4354       At compile time, PCRE "auto-possessifies" repeated items when it  knows
4355       that  what follows cannot be part of the repeat. For example, a+[bc] is
4356       compiled as if it were a++[bc]. The pcretest output when  this  pattern
4357       is  anchored  and  then  applied  with automatic callouts to the string
4358       "aaaa" is:
4359
4360         --->aaaa
4361          +0 ^        ^
4362          +1 ^        a+
4363          +3 ^   ^    [bc]
4364         No match
4365
4366       This indicates that when matching [bc] fails, there is no  backtracking
4367       into  a+  and  therefore the callouts that would be taken for the back-
4368       tracks do not occur.  You can disable the  auto-possessify  feature  by
4369       passing PCRE_NO_AUTO_POSSESS to pcre_compile(), or starting the pattern
4370       with (*NO_AUTO_POSSESS). If this is done  in  pcretest  (using  the  /O
4371       qualifier), the output changes to this:
4372
4373         --->aaaa
4374          +0 ^        ^
4375          +1 ^        a+
4376          +3 ^   ^    [bc]
4377          +3 ^  ^     [bc]
4378          +3 ^ ^      [bc]
4379          +3 ^^       [bc]
4380         No match
4381
4382       This time, when matching [bc] fails, the matcher backtracks into a+ and
4383       tries again, repeatedly, until a+ itself fails.
4384
4385       Other optimizations that provide fast "no match"  results  also  affect
4386       callouts.  For example, if the pattern is
4387
4388         ab(?C4)cd
4389
4390       PCRE knows that any matching string must contain the letter "d". If the
4391       subject string is "abyz", the lack of "d" means that  matching  doesn't
4392       ever  start,  and  the  callout is never reached. However, with "abyd",
4393       though the result is still no match, the callout is obeyed.
4394
4395       If the pattern is studied, PCRE knows the minimum length of a  matching
4396       string,  and will immediately give a "no match" return without actually
4397       running a match if the subject is not long enough, or,  for  unanchored
4398       patterns, if it has been scanned far enough.
4399
4400       You  can disable these optimizations by passing the PCRE_NO_START_OPTI-
4401       MIZE option to the matching function, or by starting the  pattern  with
4402       (*NO_START_OPT).  This slows down the matching process, but does ensure
4403       that callouts such as the example above are obeyed.
4404
4405
4406THE CALLOUT INTERFACE
4407
4408       During matching, when PCRE reaches a callout point, the external  func-
4409       tion defined by pcre_callout or pcre[16|32]_callout is called (if it is
4410       set). This applies to both normal and DFA matching. The  only  argument
4411       to   the   callout   function   is  a  pointer  to  a  pcre_callout  or
4412       pcre[16|32]_callout block.  These  structures  contains  the  following
4413       fields:
4414
4415         int           version;
4416         int           callout_number;
4417         int          *offset_vector;
4418         const char   *subject;           (8-bit version)
4419         PCRE_SPTR16   subject;           (16-bit version)
4420         PCRE_SPTR32   subject;           (32-bit version)
4421         int           subject_length;
4422         int           start_match;
4423         int           current_position;
4424         int           capture_top;
4425         int           capture_last;
4426         void         *callout_data;
4427         int           pattern_position;
4428         int           next_item_length;
4429         const unsigned char *mark;       (8-bit version)
4430         const PCRE_UCHAR16  *mark;       (16-bit version)
4431         const PCRE_UCHAR32  *mark;       (32-bit version)
4432
4433       The  version  field  is an integer containing the version number of the
4434       block format. The initial version was 0; the current version is 2.  The
4435       version  number  will  change  again in future if additional fields are
4436       added, but the intention is never to remove any of the existing fields.
4437
4438       The callout_number field contains the number of the  callout,  as  com-
4439       piled  into  the pattern (that is, the number after ?C for manual call-
4440       outs, and 255 for automatically generated callouts).
4441
4442       The offset_vector field is a pointer to the vector of offsets that  was
4443       passed  by  the  caller  to  the matching function. When pcre_exec() or
4444       pcre[16|32]_exec() is used, the contents can be inspected, in order  to
4445       extract  substrings  that  have been matched so far, in the same way as
4446       for extracting substrings after a match  has  completed.  For  the  DFA
4447       matching functions, this field is not useful.
4448
4449       The subject and subject_length fields contain copies of the values that
4450       were passed to the matching function.
4451
4452       The start_match field normally contains the offset within  the  subject
4453       at  which  the  current  match  attempt started. However, if the escape
4454       sequence \K has been encountered, this value is changed to reflect  the
4455       modified  starting  point.  If the pattern is not anchored, the callout
4456       function may be called several times from the same point in the pattern
4457       for different starting points in the subject.
4458
4459       The  current_position  field  contains the offset within the subject of
4460       the current match pointer.
4461
4462       When the pcre_exec() or pcre[16|32]_exec()  is  used,  the  capture_top
4463       field  contains  one  more than the number of the highest numbered cap-
4464       tured substring so far. If no substrings have been captured, the  value
4465       of  capture_top  is one. This is always the case when the DFA functions
4466       are used, because they do not support captured substrings.
4467
4468       The capture_last field contains the number of the  most  recently  cap-
4469       tured  substring. However, when a recursion exits, the value reverts to
4470       what it was outside the recursion, as do the  values  of  all  captured
4471       substrings.  If  no  substrings  have  been captured, the value of cap-
4472       ture_last is -1. This is always the case for  the  DFA  matching  func-
4473       tions.
4474
4475       The  callout_data  field  contains a value that is passed to a matching
4476       function specifically so that it can be passed back in callouts. It  is
4477       passed  in  the callout_data field of a pcre_extra or pcre[16|32]_extra
4478       data structure. If no such data was passed, the value  of  callout_data
4479       in  a  callout  block is NULL. There is a description of the pcre_extra
4480       structure in the pcreapi documentation.
4481
4482       The pattern_position field is present from version  1  of  the  callout
4483       structure. It contains the offset to the next item to be matched in the
4484       pattern string.
4485
4486       The next_item_length field is present from version  1  of  the  callout
4487       structure. It contains the length of the next item to be matched in the
4488       pattern string. When the callout immediately  precedes  an  alternation
4489       bar,  a  closing  parenthesis, or the end of the pattern, the length is
4490       zero. When the callout precedes an opening parenthesis, the  length  is
4491       that of the entire subpattern.
4492
4493       The  pattern_position  and next_item_length fields are intended to help
4494       in distinguishing between different automatic callouts, which all  have
4495       the same callout number. However, they are set for all callouts.
4496
4497       The  mark  field is present from version 2 of the callout structure. In
4498       callouts from pcre_exec() or pcre[16|32]_exec() it contains  a  pointer
4499       to  the  zero-terminated  name  of  the  most  recently passed (*MARK),
4500       (*PRUNE), or (*THEN) item in the match, or NULL if no such  items  have
4501       been  passed.  Instances  of  (*PRUNE) or (*THEN) without a name do not
4502       obliterate a previous (*MARK). In callouts from the DFA matching  func-
4503       tions this field always contains NULL.
4504
4505
4506RETURN VALUES
4507
4508       The  external callout function returns an integer to PCRE. If the value
4509       is zero, matching proceeds as normal. If  the  value  is  greater  than
4510       zero,  matching  fails  at  the current point, but the testing of other
4511       matching possibilities goes ahead, just as if a lookahead assertion had
4512       failed.  If  the  value  is less than zero, the match is abandoned, the
4513       matching function returns the negative value.
4514
4515       Negative  values  should  normally  be   chosen   from   the   set   of
4516       PCRE_ERROR_xxx values. In particular, PCRE_ERROR_NOMATCH forces a stan-
4517       dard "no  match"  failure.   The  error  number  PCRE_ERROR_CALLOUT  is
4518       reserved  for  use  by callout functions; it will never be used by PCRE
4519       itself.
4520
4521
4522AUTHOR
4523
4524       Philip Hazel
4525       University Computing Service
4526       Cambridge CB2 3QH, England.
4527
4528
4529REVISION
4530
4531       Last updated: 12 November 2013
4532       Copyright (c) 1997-2013 University of Cambridge.
4533------------------------------------------------------------------------------
4534
4535
4536PCRECOMPAT(3)              Library Functions Manual              PCRECOMPAT(3)
4537
4538
4539
4540NAME
4541       PCRE - Perl-compatible regular expressions
4542
4543DIFFERENCES BETWEEN PCRE AND PERL
4544
4545       This  document describes the differences in the ways that PCRE and Perl
4546       handle regular expressions. The differences  described  here  are  with
4547       respect to Perl versions 5.10 and above.
4548
4549       1. PCRE has only a subset of Perl's Unicode support. Details of what it
4550       does have are given in the pcreunicode page.
4551
4552       2. PCRE allows repeat quantifiers only on parenthesized assertions, but
4553       they  do  not mean what you might think. For example, (?!a){3} does not
4554       assert that the next three characters are not "a". It just asserts that
4555       the next character is not "a" three times (in principle: PCRE optimizes
4556       this to run the assertion just once). Perl allows repeat quantifiers on
4557       other assertions such as \b, but these do not seem to have any use.
4558
4559       3.  Capturing  subpatterns  that occur inside negative lookahead asser-
4560       tions are counted, but their entries in the offsets  vector  are  never
4561       set.  Perl sometimes (but not always) sets its numerical variables from
4562       inside negative assertions.
4563
4564       4. Though binary zero characters are supported in the  subject  string,
4565       they are not allowed in a pattern string because it is passed as a nor-
4566       mal C string, terminated by zero. The escape sequence \0 can be used in
4567       the pattern to represent a binary zero.
4568
4569       5.  The  following Perl escape sequences are not supported: \l, \u, \L,
4570       \U, and \N when followed by a character name or Unicode value.  (\N  on
4571       its own, matching a non-newline character, is supported.) In fact these
4572       are implemented by Perl's general string-handling and are not  part  of
4573       its  pattern  matching engine. If any of these are encountered by PCRE,
4574       an error is generated by default. However, if the  PCRE_JAVASCRIPT_COM-
4575       PAT  option  is set, \U and \u are interpreted as JavaScript interprets
4576       them.
4577
4578       6. The Perl escape sequences \p, \P, and \X are supported only if  PCRE
4579       is  built  with Unicode character property support. The properties that
4580       can be tested with \p and \P are limited to the general category  prop-
4581       erties  such  as  Lu and Nd, script names such as Greek or Han, and the
4582       derived properties Any and L&. PCRE does  support  the  Cs  (surrogate)
4583       property,  which  Perl  does  not; the Perl documentation says "Because
4584       Perl hides the need for the user to understand the internal representa-
4585       tion  of Unicode characters, there is no need to implement the somewhat
4586       messy concept of surrogates."
4587
4588       7. PCRE does support the \Q...\E escape for quoting substrings. Charac-
4589       ters  in  between  are  treated as literals. This is slightly different
4590       from Perl in that $ and @ are  also  handled  as  literals  inside  the
4591       quotes.  In Perl, they cause variable interpolation (but of course PCRE
4592       does not have variables). Note the following examples:
4593
4594           Pattern            PCRE matches      Perl matches
4595
4596           \Qabc$xyz\E        abc$xyz           abc followed by the
4597                                                  contents of $xyz
4598           \Qabc\$xyz\E       abc\$xyz          abc\$xyz
4599           \Qabc\E\$\Qxyz\E   abc$xyz           abc$xyz
4600
4601       The \Q...\E sequence is recognized both inside  and  outside  character
4602       classes.
4603
4604       8. Fairly obviously, PCRE does not support the (?{code}) and (??{code})
4605       constructions. However, there is support for recursive  patterns.  This
4606       is  not  available  in Perl 5.8, but it is in Perl 5.10. Also, the PCRE
4607       "callout" feature allows an external function to be called during  pat-
4608       tern matching. See the pcrecallout documentation for details.
4609
4610       9.  Subpatterns  that  are called as subroutines (whether or not recur-
4611       sively) are always treated as atomic  groups  in  PCRE.  This  is  like
4612       Python,  but  unlike Perl.  Captured values that are set outside a sub-
4613       routine call can be reference from inside in PCRE,  but  not  in  Perl.
4614       There is a discussion that explains these differences in more detail in
4615       the section on recursion differences from Perl in the pcrepattern page.
4616
4617       10. If any of the backtracking control verbs are used in  a  subpattern
4618       that  is  called  as  a  subroutine (whether or not recursively), their
4619       effect is confined to that subpattern; it does not extend to  the  sur-
4620       rounding  pattern.  This is not always the case in Perl. In particular,
4621       if (*THEN) is present in a group that is called as  a  subroutine,  its
4622       action is limited to that group, even if the group does not contain any
4623       | characters. Note that such subpatterns are processed as  anchored  at
4624       the point where they are tested.
4625
4626       11.  If a pattern contains more than one backtracking control verb, the
4627       first one that is backtracked onto acts. For example,  in  the  pattern
4628       A(*COMMIT)B(*PRUNE)C  a  failure in B triggers (*COMMIT), but a failure
4629       in C triggers (*PRUNE). Perl's behaviour is more complex; in many cases
4630       it is the same as PCRE, but there are examples where it differs.
4631
4632       12.  Most  backtracking  verbs in assertions have their normal actions.
4633       They are not confined to the assertion.
4634
4635       13. There are some differences that are concerned with the settings  of
4636       captured  strings  when  part  of  a  pattern is repeated. For example,
4637       matching "aba" against the  pattern  /^(a(b)?)+$/  in  Perl  leaves  $2
4638       unset, but in PCRE it is set to "b".
4639
4640       14.  PCRE's handling of duplicate subpattern numbers and duplicate sub-
4641       pattern names is not as general as Perl's. This is a consequence of the
4642       fact the PCRE works internally just with numbers, using an external ta-
4643       ble to translate between numbers and names. In  particular,  a  pattern
4644       such  as  (?|(?<a>A)|(?<b)B),  where the two capturing parentheses have
4645       the same number but different names, is not supported,  and  causes  an
4646       error  at compile time. If it were allowed, it would not be possible to
4647       distinguish which parentheses matched, because both names map  to  cap-
4648       turing subpattern number 1. To avoid this confusing situation, an error
4649       is given at compile time.
4650
4651       15. Perl recognizes comments in some places that  PCRE  does  not,  for
4652       example,  between  the  ( and ? at the start of a subpattern. If the /x
4653       modifier is set, Perl allows white space between ( and ?  (though  cur-
4654       rent  Perls  warn that this is deprecated) but PCRE never does, even if
4655       the PCRE_EXTENDED option is set.
4656
4657       16. Perl, when in warning mode, gives warnings  for  character  classes
4658       such  as  [A-\d] or [a-[:digit:]]. It then treats the hyphens as liter-
4659       als. PCRE has no warning features, so it gives an error in these  cases
4660       because they are almost certainly user mistakes.
4661
4662       17.  In  PCRE,  the upper/lower case character properties Lu and Ll are
4663       not affected when case-independent matching is specified. For  example,
4664       \p{Lu} always matches an upper case letter. I think Perl has changed in
4665       this respect; in the release at the time of writing (5.16), \p{Lu}  and
4666       \p{Ll} match all letters, regardless of case, when case independence is
4667       specified.
4668
4669       18. PCRE provides some extensions to the Perl regular expression facil-
4670       ities.   Perl  5.10  includes new features that are not in earlier ver-
4671       sions of Perl, some of which (such as named parentheses) have  been  in
4672       PCRE for some time. This list is with respect to Perl 5.10:
4673
4674       (a)  Although  lookbehind  assertions  in  PCRE must match fixed length
4675       strings, each alternative branch of a lookbehind assertion can match  a
4676       different  length  of  string.  Perl requires them all to have the same
4677       length.
4678
4679       (b) If PCRE_DOLLAR_ENDONLY is set and PCRE_MULTILINE is not set, the  $
4680       meta-character matches only at the very end of the string.
4681
4682       (c) If PCRE_EXTRA is set, a backslash followed by a letter with no spe-
4683       cial meaning is faulted. Otherwise, like Perl, the backslash is quietly
4684       ignored.  (Perl can be made to issue a warning.)
4685
4686       (d)  If  PCRE_UNGREEDY is set, the greediness of the repetition quanti-
4687       fiers is inverted, that is, by default they are not greedy, but if fol-
4688       lowed by a question mark they are.
4689
4690       (e) PCRE_ANCHORED can be used at matching time to force a pattern to be
4691       tried only at the first matching position in the subject string.
4692
4693       (f) The PCRE_NOTBOL, PCRE_NOTEOL, PCRE_NOTEMPTY, PCRE_NOTEMPTY_ATSTART,
4694       and  PCRE_NO_AUTO_CAPTURE  options for pcre_exec() have no Perl equiva-
4695       lents.
4696
4697       (g) The \R escape sequence can be restricted to match only CR,  LF,  or
4698       CRLF by the PCRE_BSR_ANYCRLF option.
4699
4700       (h) The callout facility is PCRE-specific.
4701
4702       (i) The partial matching facility is PCRE-specific.
4703
4704       (j) Patterns compiled by PCRE can be saved and re-used at a later time,
4705       even on different hosts that have the other endianness.  However,  this
4706       does not apply to optimized data created by the just-in-time compiler.
4707
4708       (k)    The    alternative    matching    functions    (pcre_dfa_exec(),
4709       pcre16_dfa_exec() and pcre32_dfa_exec(),) match in a different way  and
4710       are not Perl-compatible.
4711
4712       (l)  PCRE  recognizes some special sequences such as (*CR) at the start
4713       of a pattern that set overall options that cannot be changed within the
4714       pattern.
4715
4716
4717AUTHOR
4718
4719       Philip Hazel
4720       University Computing Service
4721       Cambridge CB2 3QH, England.
4722
4723
4724REVISION
4725
4726       Last updated: 10 November 2013
4727       Copyright (c) 1997-2013 University of Cambridge.
4728------------------------------------------------------------------------------
4729
4730
4731PCREPATTERN(3)             Library Functions Manual             PCREPATTERN(3)
4732
4733
4734
4735NAME
4736       PCRE - Perl-compatible regular expressions
4737
4738PCRE REGULAR EXPRESSION DETAILS
4739
4740       The  syntax and semantics of the regular expressions that are supported
4741       by PCRE are described in detail below. There is a quick-reference  syn-
4742       tax summary in the pcresyntax page. PCRE tries to match Perl syntax and
4743       semantics as closely as it can. PCRE  also  supports  some  alternative
4744       regular  expression  syntax (which does not conflict with the Perl syn-
4745       tax) in order to provide some compatibility with regular expressions in
4746       Python, .NET, and Oniguruma.
4747
4748       Perl's  regular expressions are described in its own documentation, and
4749       regular expressions in general are covered in a number of  books,  some
4750       of  which  have  copious  examples. Jeffrey Friedl's "Mastering Regular
4751       Expressions", published by  O'Reilly,  covers  regular  expressions  in
4752       great  detail.  This  description  of  PCRE's  regular  expressions  is
4753       intended as reference material.
4754
4755       This document discusses the patterns that are supported  by  PCRE  when
4756       one    its    main   matching   functions,   pcre_exec()   (8-bit)   or
4757       pcre[16|32]_exec() (16- or 32-bit), is used. PCRE also has  alternative
4758       matching  functions,  pcre_dfa_exec()  and pcre[16|32_dfa_exec(), which
4759       match using a different algorithm that is not Perl-compatible. Some  of
4760       the  features  discussed  below  are not available when DFA matching is
4761       used. The advantages and disadvantages of  the  alternative  functions,
4762       and  how  they  differ  from the normal functions, are discussed in the
4763       pcrematching page.
4764
4765
4766SPECIAL START-OF-PATTERN ITEMS
4767
4768       A number of options that can be passed to pcre_compile()  can  also  be
4769       set by special items at the start of a pattern. These are not Perl-com-
4770       patible, but are provided to make these options accessible  to  pattern
4771       writers  who are not able to change the program that processes the pat-
4772       tern. Any number of these items  may  appear,  but  they  must  all  be
4773       together right at the start of the pattern string, and the letters must
4774       be in upper case.
4775
4776   UTF support
4777
4778       The original operation of PCRE was on strings of  one-byte  characters.
4779       However,  there  is  now also support for UTF-8 strings in the original
4780       library, an extra library that supports  16-bit  and  UTF-16  character
4781       strings,  and a third library that supports 32-bit and UTF-32 character
4782       strings. To use these features, PCRE must be built to include appropri-
4783       ate  support. When using UTF strings you must either call the compiling
4784       function with the PCRE_UTF8, PCRE_UTF16, or PCRE_UTF32 option,  or  the
4785       pattern must start with one of these special sequences:
4786
4787         (*UTF8)
4788         (*UTF16)
4789         (*UTF32)
4790         (*UTF)
4791
4792       (*UTF)  is  a  generic  sequence  that  can  be  used  with  any of the
4793       libraries.  Starting a pattern with such a sequence  is  equivalent  to
4794       setting  the  relevant  option.  How setting a UTF mode affects pattern
4795       matching is mentioned in several places below. There is also a  summary
4796       of features in the pcreunicode page.
4797
4798       Some applications that allow their users to supply patterns may wish to
4799       restrict  them  to  non-UTF  data  for   security   reasons.   If   the
4800       PCRE_NEVER_UTF  option  is  set  at  compile  time, (*UTF) etc. are not
4801       allowed, and their appearance causes an error.
4802
4803   Unicode property support
4804
4805       Another special sequence that may appear at the start of a  pattern  is
4806       (*UCP).   This  has  the same effect as setting the PCRE_UCP option: it
4807       causes sequences such as \d and \w to use Unicode properties to  deter-
4808       mine character types, instead of recognizing only characters with codes
4809       less than 128 via a lookup table.
4810
4811   Disabling auto-possessification
4812
4813       If a pattern starts with (*NO_AUTO_POSSESS), it has the same effect  as
4814       setting  the  PCRE_NO_AUTO_POSSESS  option  at compile time. This stops
4815       PCRE from making quantifiers possessive when what follows cannot  match
4816       the  repeated item. For example, by default a+b is treated as a++b. For
4817       more details, see the pcreapi documentation.
4818
4819   Disabling start-up optimizations
4820
4821       If a pattern starts with (*NO_START_OPT), it has  the  same  effect  as
4822       setting the PCRE_NO_START_OPTIMIZE option either at compile or matching
4823       time. This disables several  optimizations  for  quickly  reaching  "no
4824       match" results. For more details, see the pcreapi documentation.
4825
4826   Newline conventions
4827
4828       PCRE  supports five different conventions for indicating line breaks in
4829       strings: a single CR (carriage return) character, a  single  LF  (line-
4830       feed) character, the two-character sequence CRLF, any of the three pre-
4831       ceding, or any Unicode newline sequence. The pcreapi page  has  further
4832       discussion  about newlines, and shows how to set the newline convention
4833       in the options arguments for the compiling and matching functions.
4834
4835       It is also possible to specify a newline convention by starting a  pat-
4836       tern string with one of the following five sequences:
4837
4838         (*CR)        carriage return
4839         (*LF)        linefeed
4840         (*CRLF)      carriage return, followed by linefeed
4841         (*ANYCRLF)   any of the three above
4842         (*ANY)       all Unicode newline sequences
4843
4844       These override the default and the options given to the compiling func-
4845       tion. For example, on a Unix system where LF  is  the  default  newline
4846       sequence, the pattern
4847
4848         (*CR)a.b
4849
4850       changes the convention to CR. That pattern matches "a\nb" because LF is
4851       no longer a newline. If more than one of these settings is present, the
4852       last one is used.
4853
4854       The  newline  convention affects where the circumflex and dollar asser-
4855       tions are true. It also affects the interpretation of the dot metachar-
4856       acter when PCRE_DOTALL is not set, and the behaviour of \N. However, it
4857       does not affect what the \R escape sequence matches. By  default,  this
4858       is  any Unicode newline sequence, for Perl compatibility. However, this
4859       can be changed; see the description of \R in the section entitled "New-
4860       line  sequences"  below.  A change of \R setting can be combined with a
4861       change of newline convention.
4862
4863   Setting match and recursion limits
4864
4865       The caller of pcre_exec() can set a limit on the number  of  times  the
4866       internal  match() function is called and on the maximum depth of recur-
4867       sive calls. These facilities are provided to catch runaway matches that
4868       are provoked by patterns with huge matching trees (a typical example is
4869       a pattern with nested unlimited repeats) and to avoid  running  out  of
4870       system  stack  by  too  much  recursion.  When  one  of these limits is
4871       reached, pcre_exec() gives an error return. The limits can also be  set
4872       by items at the start of the pattern of the form
4873
4874         (*LIMIT_MATCH=d)
4875         (*LIMIT_RECURSION=d)
4876
4877       where d is any number of decimal digits. However, the value of the set-
4878       ting must be less than the value set (or defaulted) by  the  caller  of
4879       pcre_exec()  for  it  to  have  any effect. In other words, the pattern
4880       writer can lower the limits set by the programmer, but not raise  them.
4881       If  there  is  more  than one setting of one of these limits, the lower
4882       value is used.
4883
4884
4885EBCDIC CHARACTER CODES
4886
4887       PCRE can be compiled to run in an environment that uses EBCDIC  as  its
4888       character code rather than ASCII or Unicode (typically a mainframe sys-
4889       tem). In the sections below, character code values are  ASCII  or  Uni-
4890       code; in an EBCDIC environment these characters may have different code
4891       values, and there are no code points greater than 255.
4892
4893
4894CHARACTERS AND METACHARACTERS
4895
4896       A regular expression is a pattern that is  matched  against  a  subject
4897       string  from  left  to right. Most characters stand for themselves in a
4898       pattern, and match the corresponding characters in the  subject.  As  a
4899       trivial example, the pattern
4900
4901         The quick brown fox
4902
4903       matches a portion of a subject string that is identical to itself. When
4904       caseless matching is specified (the PCRE_CASELESS option), letters  are
4905       matched  independently  of case. In a UTF mode, PCRE always understands
4906       the concept of case for characters whose values are less than  128,  so
4907       caseless  matching  is always possible. For characters with higher val-
4908       ues, the concept of case is supported if PCRE is compiled with  Unicode
4909       property  support,  but  not  otherwise.   If  you want to use caseless
4910       matching for characters 128 and above, you must  ensure  that  PCRE  is
4911       compiled with Unicode property support as well as with UTF support.
4912
4913       The  power  of  regular  expressions  comes from the ability to include
4914       alternatives and repetitions in the pattern. These are encoded  in  the
4915       pattern by the use of metacharacters, which do not stand for themselves
4916       but instead are interpreted in some special way.
4917
4918       There are two different sets of metacharacters: those that  are  recog-
4919       nized  anywhere in the pattern except within square brackets, and those
4920       that are recognized within square brackets.  Outside  square  brackets,
4921       the metacharacters are as follows:
4922
4923         \      general escape character with several uses
4924         ^      assert start of string (or line, in multiline mode)
4925         $      assert end of string (or line, in multiline mode)
4926         .      match any character except newline (by default)
4927         [      start character class definition
4928         |      start of alternative branch
4929         (      start subpattern
4930         )      end subpattern
4931         ?      extends the meaning of (
4932                also 0 or 1 quantifier
4933                also quantifier minimizer
4934         *      0 or more quantifier
4935         +      1 or more quantifier
4936                also "possessive quantifier"
4937         {      start min/max quantifier
4938
4939       Part  of  a  pattern  that is in square brackets is called a "character
4940       class". In a character class the only metacharacters are:
4941
4942         \      general escape character
4943         ^      negate the class, but only if the first character
4944         -      indicates character range
4945         [      POSIX character class (only if followed by POSIX
4946                  syntax)
4947         ]      terminates the character class
4948
4949       The following sections describe the use of each of the metacharacters.
4950
4951
4952BACKSLASH
4953
4954       The backslash character has several uses. Firstly, if it is followed by
4955       a character that is not a number or a letter, it takes away any special
4956       meaning that character may have. This use of  backslash  as  an  escape
4957       character applies both inside and outside character classes.
4958
4959       For  example,  if  you want to match a * character, you write \* in the
4960       pattern.  This escaping action applies whether  or  not  the  following
4961       character  would  otherwise be interpreted as a metacharacter, so it is
4962       always safe to precede a non-alphanumeric  with  backslash  to  specify
4963       that  it stands for itself. In particular, if you want to match a back-
4964       slash, you write \\.
4965
4966       In a UTF mode, only ASCII numbers and letters have any special  meaning
4967       after  a  backslash.  All  other characters (in particular, those whose
4968       codepoints are greater than 127) are treated as literals.
4969
4970       If a pattern is compiled with  the  PCRE_EXTENDED  option,  most  white
4971       space  in the pattern (other than in a character class), and characters
4972       between a # outside a character class and the next newline,  inclusive,
4973       are ignored. An escaping backslash can be used to include a white space
4974       or # character as part of the pattern.
4975
4976       If you want to remove the special meaning from a  sequence  of  charac-
4977       ters,  you can do so by putting them between \Q and \E. This is differ-
4978       ent from Perl in that $ and  @  are  handled  as  literals  in  \Q...\E
4979       sequences  in  PCRE, whereas in Perl, $ and @ cause variable interpola-
4980       tion. Note the following examples:
4981
4982         Pattern            PCRE matches   Perl matches
4983
4984         \Qabc$xyz\E        abc$xyz        abc followed by the
4985                                             contents of $xyz
4986         \Qabc\$xyz\E       abc\$xyz       abc\$xyz
4987         \Qabc\E\$\Qxyz\E   abc$xyz        abc$xyz
4988
4989       The \Q...\E sequence is recognized both inside  and  outside  character
4990       classes.   An  isolated \E that is not preceded by \Q is ignored. If \Q
4991       is not followed by \E later in the pattern, the literal  interpretation
4992       continues  to  the  end  of  the pattern (that is, \E is assumed at the
4993       end). If the isolated \Q is inside a character class,  this  causes  an
4994       error, because the character class is not terminated.
4995
4996   Non-printing characters
4997
4998       A second use of backslash provides a way of encoding non-printing char-
4999       acters in patterns in a visible manner. There is no restriction on  the
5000       appearance  of non-printing characters, apart from the binary zero that
5001       terminates a pattern, but when a pattern  is  being  prepared  by  text
5002       editing,  it  is  often  easier  to  use  one  of  the following escape
5003       sequences than the binary character it represents.  In an ASCII or Uni-
5004       code environment, these escapes are as follows:
5005
5006         \a        alarm, that is, the BEL character (hex 07)
5007         \cx       "control-x", where x is any ASCII character
5008         \e        escape (hex 1B)
5009         \f        form feed (hex 0C)
5010         \n        linefeed (hex 0A)
5011         \r        carriage return (hex 0D)
5012         \t        tab (hex 09)
5013         \0dd      character with octal code 0dd
5014         \ddd      character with octal code ddd, or back reference
5015         \o{ddd..} character with octal code ddd..
5016         \xhh      character with hex code hh
5017         \x{hhh..} character with hex code hhh.. (non-JavaScript mode)
5018         \uhhhh    character with hex code hhhh (JavaScript mode only)
5019
5020       The  precise effect of \cx on ASCII characters is as follows: if x is a
5021       lower case letter, it is converted to upper case. Then  bit  6  of  the
5022       character (hex 40) is inverted. Thus \cA to \cZ become hex 01 to hex 1A
5023       (A is 41, Z is 5A), but \c{ becomes hex 3B ({ is 7B), and  \c;  becomes
5024       hex  7B (; is 3B). If the data item (byte or 16-bit value) following \c
5025       has a value greater than 127, a compile-time error occurs.  This  locks
5026       out non-ASCII characters in all modes.
5027
5028       When PCRE is compiled in EBCDIC mode, \a, \e, \f, \n, \r, and \t gener-
5029       ate the appropriate EBCDIC code values. The \c escape is  processed  as
5030       specified for Perl in the perlebcdic document. The only characters that
5031       are allowed after \c are A-Z, a-z, or one of @, [, \, ], ^,  _,  or  ?.
5032       Any  other  character  provokes  a  compile-time error. The sequence \@
5033       encodes character code 0; the letters (in either case)  encode  charac-
5034       ters 1-26 (hex 01 to hex 1A); [, \, ], ^, and _ encode characters 27-31
5035       (hex 1B to hex 1F), and \? becomes either 255 (hex FF) or 95 (hex 5F).
5036
5037       Thus, apart from \?, these escapes generate  the  same  character  code
5038       values  as  they do in an ASCII environment, though the meanings of the
5039       values mostly differ. For example, \G always generates  code  value  7,
5040       which is BEL in ASCII but DEL in EBCDIC.
5041
5042       The  sequence  \?  generates DEL (127, hex 7F) in an ASCII environment,
5043       but because 127 is not a control character in  EBCDIC,  Perl  makes  it
5044       generate  the  APC character. Unfortunately, there are several variants
5045       of EBCDIC. In most of them the APC character has  the  value  255  (hex
5046       FF),  but  in  the one Perl calls POSIX-BC its value is 95 (hex 5F). If
5047       certain other characters have POSIX-BC values, PCRE makes  \?  generate
5048       95; otherwise it generates 255.
5049
5050       After  \0  up  to two further octal digits are read. If there are fewer
5051       than two digits, just  those  that  are  present  are  used.  Thus  the
5052       sequence \0\x\015 specifies two binary zeros followed by a CR character
5053       (code value 13). Make sure you supply two digits after the initial zero
5054       if the pattern character that follows is itself an octal digit.
5055
5056       The  escape \o must be followed by a sequence of octal digits, enclosed
5057       in braces. An error occurs if this is not the case. This  escape  is  a
5058       recent  addition  to Perl; it provides way of specifying character code
5059       points as octal numbers greater than 0777, and  it  also  allows  octal
5060       numbers and back references to be unambiguously specified.
5061
5062       For greater clarity and unambiguity, it is best to avoid following \ by
5063       a digit greater than zero. Instead, use \o{} or \x{} to specify charac-
5064       ter  numbers,  and \g{} to specify back references. The following para-
5065       graphs describe the old, ambiguous syntax.
5066
5067       The handling of a backslash followed by a digit other than 0 is compli-
5068       cated,  and  Perl  has changed in recent releases, causing PCRE also to
5069       change. Outside a character class, PCRE reads the digit and any follow-
5070       ing  digits  as  a  decimal number. If the number is less than 8, or if
5071       there have been at least that many previous capturing left  parentheses
5072       in  the expression, the entire sequence is taken as a back reference. A
5073       description of how this works is given later, following the  discussion
5074       of parenthesized subpatterns.
5075
5076       Inside  a  character  class,  or  if  the decimal number following \ is
5077       greater than 7 and there have not been that many capturing subpatterns,
5078       PCRE  handles \8 and \9 as the literal characters "8" and "9", and oth-
5079       erwise re-reads up to three octal digits following the backslash, using
5080       them  to  generate  a  data character.  Any subsequent digits stand for
5081       themselves. For example:
5082
5083         \040   is another way of writing an ASCII space
5084         \40    is the same, provided there are fewer than 40
5085                   previous capturing subpatterns
5086         \7     is always a back reference
5087         \11    might be a back reference, or another way of
5088                   writing a tab
5089         \011   is always a tab
5090         \0113  is a tab followed by the character "3"
5091         \113   might be a back reference, otherwise the
5092                   character with octal code 113
5093         \377   might be a back reference, otherwise
5094                   the value 255 (decimal)
5095         \81    is either a back reference, or the two
5096                   characters "8" and "1"
5097
5098       Note that octal values of 100 or greater that are specified using  this
5099       syntax  must  not be introduced by a leading zero, because no more than
5100       three octal digits are ever read.
5101
5102       By default, after \x that is not followed by {, from zero to two  hexa-
5103       decimal  digits  are  read (letters can be in upper or lower case). Any
5104       number of hexadecimal digits may appear between \x{ and }. If a charac-
5105       ter  other  than  a  hexadecimal digit appears between \x{ and }, or if
5106       there is no terminating }, an error occurs.
5107
5108       If the PCRE_JAVASCRIPT_COMPAT option is set, the interpretation  of  \x
5109       is  as  just described only when it is followed by two hexadecimal dig-
5110       its.  Otherwise, it matches a  literal  "x"  character.  In  JavaScript
5111       mode, support for code points greater than 256 is provided by \u, which
5112       must be followed by four hexadecimal digits;  otherwise  it  matches  a
5113       literal "u" character.
5114
5115       Characters whose value is less than 256 can be defined by either of the
5116       two syntaxes for \x (or by \u in JavaScript mode). There is no  differ-
5117       ence in the way they are handled. For example, \xdc is exactly the same
5118       as \x{dc} (or \u00dc in JavaScript mode).
5119
5120   Constraints on character values
5121
5122       Characters that are specified using octal or  hexadecimal  numbers  are
5123       limited to certain values, as follows:
5124
5125         8-bit non-UTF mode    less than 0x100
5126         8-bit UTF-8 mode      less than 0x10ffff and a valid codepoint
5127         16-bit non-UTF mode   less than 0x10000
5128         16-bit UTF-16 mode    less than 0x10ffff and a valid codepoint
5129         32-bit non-UTF mode   less than 0x100000000
5130         32-bit UTF-32 mode    less than 0x10ffff and a valid codepoint
5131
5132       Invalid  Unicode  codepoints  are  the  range 0xd800 to 0xdfff (the so-
5133       called "surrogate" codepoints), and 0xffef.
5134
5135   Escape sequences in character classes
5136
5137       All the sequences that define a single character value can be used both
5138       inside  and  outside character classes. In addition, inside a character
5139       class, \b is interpreted as the backspace character (hex 08).
5140
5141       \N is not allowed in a character class. \B, \R, and \X are not  special
5142       inside  a  character  class.  Like other unrecognized escape sequences,
5143       they are treated as  the  literal  characters  "B",  "R",  and  "X"  by
5144       default,  but cause an error if the PCRE_EXTRA option is set. Outside a
5145       character class, these sequences have different meanings.
5146
5147   Unsupported escape sequences
5148
5149       In Perl, the sequences \l, \L, \u, and \U are recognized by its  string
5150       handler  and  used  to  modify  the  case  of  following characters. By
5151       default, PCRE does not support these escape sequences. However, if  the
5152       PCRE_JAVASCRIPT_COMPAT  option  is set, \U matches a "U" character, and
5153       \u can be used to define a character by code point, as described in the
5154       previous section.
5155
5156   Absolute and relative back references
5157
5158       The  sequence  \g followed by an unsigned or a negative number, option-
5159       ally enclosed in braces, is an absolute or relative back  reference.  A
5160       named back reference can be coded as \g{name}. Back references are dis-
5161       cussed later, following the discussion of parenthesized subpatterns.
5162
5163   Absolute and relative subroutine calls
5164
5165       For compatibility with Oniguruma, the non-Perl syntax \g followed by  a
5166       name or a number enclosed either in angle brackets or single quotes, is
5167       an alternative syntax for referencing a subpattern as  a  "subroutine".
5168       Details  are  discussed  later.   Note  that  \g{...} (Perl syntax) and
5169       \g<...> (Oniguruma syntax) are not synonymous. The  former  is  a  back
5170       reference; the latter is a subroutine call.
5171
5172   Generic character types
5173
5174       Another use of backslash is for specifying generic character types:
5175
5176         \d     any decimal digit
5177         \D     any character that is not a decimal digit
5178         \h     any horizontal white space character
5179         \H     any character that is not a horizontal white space character
5180         \s     any white space character
5181         \S     any character that is not a white space character
5182         \v     any vertical white space character
5183         \V     any character that is not a vertical white space character
5184         \w     any "word" character
5185         \W     any "non-word" character
5186
5187       There is also the single sequence \N, which matches a non-newline char-
5188       acter.  This is the same as the "." metacharacter when  PCRE_DOTALL  is
5189       not  set.  Perl also uses \N to match characters by name; PCRE does not
5190       support this.
5191
5192       Each pair of lower and upper case escape sequences partitions the  com-
5193       plete  set  of  characters  into two disjoint sets. Any given character
5194       matches one, and only one, of each pair. The sequences can appear  both
5195       inside  and outside character classes. They each match one character of
5196       the appropriate type. If the current matching point is at  the  end  of
5197       the  subject string, all of them fail, because there is no character to
5198       match.
5199
5200       For compatibility with Perl, \s did not used to match the VT  character
5201       (code  11),  which  made it different from the the POSIX "space" class.
5202       However, Perl added VT at release  5.18,  and  PCRE  followed  suit  at
5203       release  8.34.  The  default  \s characters are now HT (9), LF (10), VT
5204       (11), FF (12), CR (13), and space (32),  which  are  defined  as  white
5205       space in the "C" locale. This list may vary if locale-specific matching
5206       is taking place. For example, in some locales the "non-breaking  space"
5207       character  (\xA0)  is  recognized  as white space, and in others the VT
5208       character is not.
5209
5210       A "word" character is an underscore or any character that is  a  letter
5211       or  digit.   By  default,  the definition of letters and digits is con-
5212       trolled by PCRE's low-valued character tables, and may vary if  locale-
5213       specific  matching is taking place (see "Locale support" in the pcreapi
5214       page). For example, in a French locale such  as  "fr_FR"  in  Unix-like
5215       systems,  or "french" in Windows, some character codes greater than 127
5216       are used for accented letters, and these are then matched  by  \w.  The
5217       use of locales with Unicode is discouraged.
5218
5219       By  default,  characters  whose  code points are greater than 127 never
5220       match \d, \s, or \w, and always match \D, \S, and \W, although this may
5221       vary  for characters in the range 128-255 when locale-specific matching
5222       is happening.  These escape sequences retain  their  original  meanings
5223       from  before  Unicode support was available, mainly for efficiency rea-
5224       sons. If PCRE is  compiled  with  Unicode  property  support,  and  the
5225       PCRE_UCP  option is set, the behaviour is changed so that Unicode prop-
5226       erties are used to determine character types, as follows:
5227
5228         \d  any character that matches \p{Nd} (decimal digit)
5229         \s  any character that matches \p{Z} or \h or \v
5230         \w  any character that matches \p{L} or \p{N}, plus underscore
5231
5232       The upper case escapes match the inverse sets of characters. Note  that
5233       \d  matches  only decimal digits, whereas \w matches any Unicode digit,
5234       as well as any Unicode letter, and underscore. Note also that  PCRE_UCP
5235       affects  \b,  and  \B  because  they are defined in terms of \w and \W.
5236       Matching these sequences is noticeably slower when PCRE_UCP is set.
5237
5238       The sequences \h, \H, \v, and \V are features that were added  to  Perl
5239       at  release  5.10. In contrast to the other sequences, which match only
5240       ASCII characters by default, these  always  match  certain  high-valued
5241       code points, whether or not PCRE_UCP is set. The horizontal space char-
5242       acters are:
5243
5244         U+0009     Horizontal tab (HT)
5245         U+0020     Space
5246         U+00A0     Non-break space
5247         U+1680     Ogham space mark
5248         U+180E     Mongolian vowel separator
5249         U+2000     En quad
5250         U+2001     Em quad
5251         U+2002     En space
5252         U+2003     Em space
5253         U+2004     Three-per-em space
5254         U+2005     Four-per-em space
5255         U+2006     Six-per-em space
5256         U+2007     Figure space
5257         U+2008     Punctuation space
5258         U+2009     Thin space
5259         U+200A     Hair space
5260         U+202F     Narrow no-break space
5261         U+205F     Medium mathematical space
5262         U+3000     Ideographic space
5263
5264       The vertical space characters are:
5265
5266         U+000A     Linefeed (LF)
5267         U+000B     Vertical tab (VT)
5268         U+000C     Form feed (FF)
5269         U+000D     Carriage return (CR)
5270         U+0085     Next line (NEL)
5271         U+2028     Line separator
5272         U+2029     Paragraph separator
5273
5274       In 8-bit, non-UTF-8 mode, only the characters with codepoints less than
5275       256 are relevant.
5276
5277   Newline sequences
5278
5279       Outside  a  character class, by default, the escape sequence \R matches
5280       any Unicode newline sequence. In 8-bit non-UTF-8 mode \R is  equivalent
5281       to the following:
5282
5283         (?>\r\n|\n|\x0b|\f|\r|\x85)
5284
5285       This  is  an  example  of an "atomic group", details of which are given
5286       below.  This particular group matches either the two-character sequence
5287       CR  followed  by  LF,  or  one  of  the single characters LF (linefeed,
5288       U+000A), VT (vertical tab, U+000B), FF (form feed,  U+000C),  CR  (car-
5289       riage  return,  U+000D),  or NEL (next line, U+0085). The two-character
5290       sequence is treated as a single unit that cannot be split.
5291
5292       In other modes, two additional characters whose codepoints are  greater
5293       than 255 are added: LS (line separator, U+2028) and PS (paragraph sepa-
5294       rator, U+2029).  Unicode character property support is not  needed  for
5295       these characters to be recognized.
5296
5297       It is possible to restrict \R to match only CR, LF, or CRLF (instead of
5298       the complete set  of  Unicode  line  endings)  by  setting  the  option
5299       PCRE_BSR_ANYCRLF either at compile time or when the pattern is matched.
5300       (BSR is an abbrevation for "backslash R".) This can be made the default
5301       when  PCRE  is  built;  if this is the case, the other behaviour can be
5302       requested via the PCRE_BSR_UNICODE option.   It  is  also  possible  to
5303       specify  these  settings  by  starting a pattern string with one of the
5304       following sequences:
5305
5306         (*BSR_ANYCRLF)   CR, LF, or CRLF only
5307         (*BSR_UNICODE)   any Unicode newline sequence
5308
5309       These override the default and the options given to the compiling func-
5310       tion,  but  they  can  themselves  be  overridden by options given to a
5311       matching function. Note that these  special  settings,  which  are  not
5312       Perl-compatible,  are  recognized  only at the very start of a pattern,
5313       and that they must be in upper case.  If  more  than  one  of  them  is
5314       present,  the  last  one is used. They can be combined with a change of
5315       newline convention; for example, a pattern can start with:
5316
5317         (*ANY)(*BSR_ANYCRLF)
5318
5319       They can also be combined with the (*UTF8), (*UTF16), (*UTF32),  (*UTF)
5320       or (*UCP) special sequences. Inside a character class, \R is treated as
5321       an unrecognized escape sequence, and  so  matches  the  letter  "R"  by
5322       default, but causes an error if PCRE_EXTRA is set.
5323
5324   Unicode character properties
5325
5326       When PCRE is built with Unicode character property support, three addi-
5327       tional escape sequences that match characters with specific  properties
5328       are  available.   When  in 8-bit non-UTF-8 mode, these sequences are of
5329       course limited to testing characters whose  codepoints  are  less  than
5330       256, but they do work in this mode.  The extra escape sequences are:
5331
5332         \p{xx}   a character with the xx property
5333         \P{xx}   a character without the xx property
5334         \X       a Unicode extended grapheme cluster
5335
5336       The  property  names represented by xx above are limited to the Unicode
5337       script names, the general category properties, "Any", which matches any
5338       character   (including  newline),  and  some  special  PCRE  properties
5339       (described in the next section).  Other Perl properties such as  "InMu-
5340       sicalSymbols"  are  not  currently supported by PCRE. Note that \P{Any}
5341       does not match any characters, so always causes a match failure.
5342
5343       Sets of Unicode characters are defined as belonging to certain scripts.
5344       A  character from one of these sets can be matched using a script name.
5345       For example:
5346
5347         \p{Greek}
5348         \P{Han}
5349
5350       Those that are not part of an identified script are lumped together  as
5351       "Common". The current list of scripts is:
5352
5353       Arabic,  Armenian, Avestan, Balinese, Bamum, Bassa_Vah, Batak, Bengali,
5354       Bopomofo, Brahmi, Braille, Buginese, Buhid,  Canadian_Aboriginal,  Car-
5355       ian, Caucasian_Albanian, Chakma, Cham, Cherokee, Common, Coptic, Cunei-
5356       form, Cypriot, Cyrillic, Deseret, Devanagari, Duployan, Egyptian_Hiero-
5357       glyphs,  Elbasan,  Ethiopic,  Georgian,  Glagolitic,  Gothic,  Grantha,
5358       Greek, Gujarati, Gurmukhi,  Han,  Hangul,  Hanunoo,  Hebrew,  Hiragana,
5359       Imperial_Aramaic,     Inherited,     Inscriptional_Pahlavi,    Inscrip-
5360       tional_Parthian,  Javanese,  Kaithi,   Kannada,   Katakana,   Kayah_Li,
5361       Kharoshthi,  Khmer,  Khojki, Khudawadi, Lao, Latin, Lepcha, Limbu, Lin-
5362       ear_A, Linear_B, Lisu, Lycian, Lydian,  Mahajani,  Malayalam,  Mandaic,
5363       Manichaean,      Meetei_Mayek,     Mende_Kikakui,     Meroitic_Cursive,
5364       Meroitic_Hieroglyphs, Miao, Modi, Mongolian, Mro,  Myanmar,  Nabataean,
5365       New_Tai_Lue,   Nko,  Ogham,  Ol_Chiki,  Old_Italic,  Old_North_Arabian,
5366       Old_Permic, Old_Persian, Old_South_Arabian, Old_Turkic, Oriya, Osmanya,
5367       Pahawh_Hmong,    Palmyrene,    Pau_Cin_Hau,    Phags_Pa,    Phoenician,
5368       Psalter_Pahlavi, Rejang, Runic, Samaritan,  Saurashtra,  Sharada,  Sha-
5369       vian,  Siddham, Sinhala, Sora_Sompeng, Sundanese, Syloti_Nagri, Syriac,
5370       Tagalog, Tagbanwa, Tai_Le, Tai_Tham, Tai_Viet,  Takri,  Tamil,  Telugu,
5371       Thaana,  Thai,  Tibetan, Tifinagh, Tirhuta, Ugaritic, Vai, Warang_Citi,
5372       Yi.
5373
5374       Each character has exactly one Unicode general category property, spec-
5375       ified  by a two-letter abbreviation. For compatibility with Perl, nega-
5376       tion can be specified by including a  circumflex  between  the  opening
5377       brace  and  the  property  name.  For  example,  \p{^Lu} is the same as
5378       \P{Lu}.
5379
5380       If only one letter is specified with \p or \P, it includes all the gen-
5381       eral  category properties that start with that letter. In this case, in
5382       the absence of negation, the curly brackets in the escape sequence  are
5383       optional; these two examples have the same effect:
5384
5385         \p{L}
5386         \pL
5387
5388       The following general category property codes are supported:
5389
5390         C     Other
5391         Cc    Control
5392         Cf    Format
5393         Cn    Unassigned
5394         Co    Private use
5395         Cs    Surrogate
5396
5397         L     Letter
5398         Ll    Lower case letter
5399         Lm    Modifier letter
5400         Lo    Other letter
5401         Lt    Title case letter
5402         Lu    Upper case letter
5403
5404         M     Mark
5405         Mc    Spacing mark
5406         Me    Enclosing mark
5407         Mn    Non-spacing mark
5408
5409         N     Number
5410         Nd    Decimal number
5411         Nl    Letter number
5412         No    Other number
5413
5414         P     Punctuation
5415         Pc    Connector punctuation
5416         Pd    Dash punctuation
5417         Pe    Close punctuation
5418         Pf    Final punctuation
5419         Pi    Initial punctuation
5420         Po    Other punctuation
5421         Ps    Open punctuation
5422
5423         S     Symbol
5424         Sc    Currency symbol
5425         Sk    Modifier symbol
5426         Sm    Mathematical symbol
5427         So    Other symbol
5428
5429         Z     Separator
5430         Zl    Line separator
5431         Zp    Paragraph separator
5432         Zs    Space separator
5433
5434       The  special property L& is also supported: it matches a character that
5435       has the Lu, Ll, or Lt property, in other words, a letter  that  is  not
5436       classified as a modifier or "other".
5437
5438       The  Cs  (Surrogate)  property  applies only to characters in the range
5439       U+D800 to U+DFFF. Such characters are not valid in Unicode strings  and
5440       so  cannot  be  tested  by  PCRE, unless UTF validity checking has been
5441       turned    off    (see    the    discussion    of    PCRE_NO_UTF8_CHECK,
5442       PCRE_NO_UTF16_CHECK  and PCRE_NO_UTF32_CHECK in the pcreapi page). Perl
5443       does not support the Cs property.
5444
5445       The long synonyms for  property  names  that  Perl  supports  (such  as
5446       \p{Letter})  are  not  supported by PCRE, nor is it permitted to prefix
5447       any of these properties with "Is".
5448
5449       No character that is in the Unicode table has the Cn (unassigned) prop-
5450       erty.  Instead, this property is assumed for any code point that is not
5451       in the Unicode table.
5452
5453       Specifying caseless matching does not affect  these  escape  sequences.
5454       For  example,  \p{Lu}  always  matches only upper case letters. This is
5455       different from the behaviour of current versions of Perl.
5456
5457       Matching characters by Unicode property is not fast, because  PCRE  has
5458       to  do  a  multistage table lookup in order to find a character's prop-
5459       erty. That is why the traditional escape sequences such as \d and \w do
5460       not use Unicode properties in PCRE by default, though you can make them
5461       do so by setting the PCRE_UCP option or by starting  the  pattern  with
5462       (*UCP).
5463
5464   Extended grapheme clusters
5465
5466       The  \X  escape  matches  any number of Unicode characters that form an
5467       "extended grapheme cluster", and treats the sequence as an atomic group
5468       (see  below).   Up  to and including release 8.31, PCRE matched an ear-
5469       lier, simpler definition that was equivalent to
5470
5471         (?>\PM\pM*)
5472
5473       That is, it matched a character without the "mark"  property,  followed
5474       by  zero  or  more characters with the "mark" property. Characters with
5475       the "mark" property are typically non-spacing accents that  affect  the
5476       preceding character.
5477
5478       This  simple definition was extended in Unicode to include more compli-
5479       cated kinds of composite character by giving each character a  grapheme
5480       breaking  property,  and  creating  rules  that use these properties to
5481       define the boundaries of extended grapheme  clusters.  In  releases  of
5482       PCRE later than 8.31, \X matches one of these clusters.
5483
5484       \X  always  matches  at least one character. Then it decides whether to
5485       add additional characters according to the following rules for ending a
5486       cluster:
5487
5488       1. End at the end of the subject string.
5489
5490       2.  Do not end between CR and LF; otherwise end after any control char-
5491       acter.
5492
5493       3. Do not break Hangul (a Korean  script)  syllable  sequences.  Hangul
5494       characters  are of five types: L, V, T, LV, and LVT. An L character may
5495       be followed by an L, V, LV, or LVT character; an LV or V character  may
5496       be followed by a V or T character; an LVT or T character may be follwed
5497       only by a T character.
5498
5499       4. Do not end before extending characters or spacing marks.  Characters
5500       with  the  "mark"  property  always have the "extend" grapheme breaking
5501       property.
5502
5503       5. Do not end after prepend characters.
5504
5505       6. Otherwise, end the cluster.
5506
5507   PCRE's additional properties
5508
5509       As well as the standard Unicode properties described above,  PCRE  sup-
5510       ports  four  more  that  make it possible to convert traditional escape
5511       sequences such as \w and \s to use Unicode properties. PCRE uses  these
5512       non-standard, non-Perl properties internally when PCRE_UCP is set. How-
5513       ever, they may also be used explicitly. These properties are:
5514
5515         Xan   Any alphanumeric character
5516         Xps   Any POSIX space character
5517         Xsp   Any Perl space character
5518         Xwd   Any Perl "word" character
5519
5520       Xan matches characters that have either the L (letter) or the  N  (num-
5521       ber)  property. Xps matches the characters tab, linefeed, vertical tab,
5522       form feed, or carriage return, and any other character that has  the  Z
5523       (separator)  property.  Xsp is the same as Xps; it used to exclude ver-
5524       tical tab, for Perl compatibility, but Perl changed, and so  PCRE  fol-
5525       lowed  at  release  8.34.  Xwd matches the same characters as Xan, plus
5526       underscore.
5527
5528       There is another non-standard property, Xuc, which matches any  charac-
5529       ter  that  can  be represented by a Universal Character Name in C++ and
5530       other programming languages. These are the characters $,  @,  `  (grave
5531       accent),  and  all  characters with Unicode code points greater than or
5532       equal to U+00A0, except for the surrogates U+D800 to U+DFFF. Note  that
5533       most  base  (ASCII) characters are excluded. (Universal Character Names
5534       are of the form \uHHHH or \UHHHHHHHH where H is  a  hexadecimal  digit.
5535       Note that the Xuc property does not match these sequences but the char-
5536       acters that they represent.)
5537
5538   Resetting the match start
5539
5540       The escape sequence \K causes any previously matched characters not  to
5541       be included in the final matched sequence. For example, the pattern:
5542
5543         foo\Kbar
5544
5545       matches  "foobar",  but reports that it has matched "bar". This feature
5546       is similar to a lookbehind assertion (described  below).   However,  in
5547       this  case, the part of the subject before the real match does not have
5548       to be of fixed length, as lookbehind assertions do. The use of \K  does
5549       not  interfere  with  the setting of captured substrings.  For example,
5550       when the pattern
5551
5552         (foo)\Kbar
5553
5554       matches "foobar", the first substring is still set to "foo".
5555
5556       Perl documents that the use  of  \K  within  assertions  is  "not  well
5557       defined".  In  PCRE,  \K  is  acted upon when it occurs inside positive
5558       assertions, but is ignored in negative assertions.  Note  that  when  a
5559       pattern  such  as (?=ab\K) matches, the reported start of the match can
5560       be greater than the end of the match.
5561
5562   Simple assertions
5563
5564       The final use of backslash is for certain simple assertions. An  asser-
5565       tion  specifies a condition that has to be met at a particular point in
5566       a match, without consuming any characters from the subject string.  The
5567       use  of subpatterns for more complicated assertions is described below.
5568       The backslashed assertions are:
5569
5570         \b     matches at a word boundary
5571         \B     matches when not at a word boundary
5572         \A     matches at the start of the subject
5573         \Z     matches at the end of the subject
5574                 also matches before a newline at the end of the subject
5575         \z     matches only at the end of the subject
5576         \G     matches at the first matching position in the subject
5577
5578       Inside a character class, \b has a different meaning;  it  matches  the
5579       backspace  character.  If  any  other  of these assertions appears in a
5580       character class, by default it matches the corresponding literal  char-
5581       acter  (for  example,  \B  matches  the  letter  B).  However,  if  the
5582       PCRE_EXTRA option is set, an "invalid escape sequence" error is  gener-
5583       ated instead.
5584
5585       A  word  boundary is a position in the subject string where the current
5586       character and the previous character do not both match \w or  \W  (i.e.
5587       one  matches  \w  and the other matches \W), or the start or end of the
5588       string if the first or last character matches \w,  respectively.  In  a
5589       UTF  mode,  the  meanings  of  \w  and \W can be changed by setting the
5590       PCRE_UCP option. When this is done, it also affects \b and \B.  Neither
5591       PCRE  nor  Perl has a separate "start of word" or "end of word" metase-
5592       quence. However, whatever follows \b normally determines which  it  is.
5593       For example, the fragment \ba matches "a" at the start of a word.
5594
5595       The  \A,  \Z,  and \z assertions differ from the traditional circumflex
5596       and dollar (described in the next section) in that they only ever match
5597       at  the  very start and end of the subject string, whatever options are
5598       set. Thus, they are independent of multiline mode. These  three  asser-
5599       tions are not affected by the PCRE_NOTBOL or PCRE_NOTEOL options, which
5600       affect only the behaviour of the circumflex and dollar  metacharacters.
5601       However,  if the startoffset argument of pcre_exec() is non-zero, indi-
5602       cating that matching is to start at a point other than the beginning of
5603       the  subject,  \A  can never match. The difference between \Z and \z is
5604       that \Z matches before a newline at the end of the string as well as at
5605       the very end, whereas \z matches only at the end.
5606
5607       The  \G assertion is true only when the current matching position is at
5608       the start point of the match, as specified by the startoffset  argument
5609       of  pcre_exec().  It  differs  from \A when the value of startoffset is
5610       non-zero. By calling pcre_exec() multiple times with appropriate  argu-
5611       ments, you can mimic Perl's /g option, and it is in this kind of imple-
5612       mentation where \G can be useful.
5613
5614       Note, however, that PCRE's interpretation of \G, as the  start  of  the
5615       current match, is subtly different from Perl's, which defines it as the
5616       end of the previous match. In Perl, these can  be  different  when  the
5617       previously  matched  string was empty. Because PCRE does just one match
5618       at a time, it cannot reproduce this behaviour.
5619
5620       If all the alternatives of a pattern begin with \G, the  expression  is
5621       anchored to the starting match position, and the "anchored" flag is set
5622       in the compiled regular expression.
5623
5624
5625CIRCUMFLEX AND DOLLAR
5626
5627       The circumflex and dollar  metacharacters  are  zero-width  assertions.
5628       That  is,  they test for a particular condition being true without con-
5629       suming any characters from the subject string.
5630
5631       Outside a character class, in the default matching mode, the circumflex
5632       character  is  an  assertion  that is true only if the current matching
5633       point is at the start of the subject string. If the  startoffset  argu-
5634       ment  of  pcre_exec()  is  non-zero,  circumflex can never match if the
5635       PCRE_MULTILINE option is unset. Inside a  character  class,  circumflex
5636       has an entirely different meaning (see below).
5637
5638       Circumflex  need  not be the first character of the pattern if a number
5639       of alternatives are involved, but it should be the first thing in  each
5640       alternative  in  which  it appears if the pattern is ever to match that
5641       branch. If all possible alternatives start with a circumflex, that  is,
5642       if  the  pattern  is constrained to match only at the start of the sub-
5643       ject, it is said to be an "anchored" pattern.  (There  are  also  other
5644       constructs that can cause a pattern to be anchored.)
5645
5646       The  dollar  character is an assertion that is true only if the current
5647       matching point is at the end of  the  subject  string,  or  immediately
5648       before  a newline at the end of the string (by default). Note, however,
5649       that it does not actually match the newline. Dollar  need  not  be  the
5650       last character of the pattern if a number of alternatives are involved,
5651       but it should be the last item in any branch in which it appears.  Dol-
5652       lar has no special meaning in a character class.
5653
5654       The  meaning  of  dollar  can be changed so that it matches only at the
5655       very end of the string, by setting the  PCRE_DOLLAR_ENDONLY  option  at
5656       compile time. This does not affect the \Z assertion.
5657
5658       The meanings of the circumflex and dollar characters are changed if the
5659       PCRE_MULTILINE option is set. When  this  is  the  case,  a  circumflex
5660       matches  immediately after internal newlines as well as at the start of
5661       the subject string. It does not match after a  newline  that  ends  the
5662       string.  A dollar matches before any newlines in the string, as well as
5663       at the very end, when PCRE_MULTILINE is set. When newline is  specified
5664       as  the  two-character  sequence CRLF, isolated CR and LF characters do
5665       not indicate newlines.
5666
5667       For example, the pattern /^abc$/ matches the subject string  "def\nabc"
5668       (where  \n  represents a newline) in multiline mode, but not otherwise.
5669       Consequently, patterns that are anchored in single  line  mode  because
5670       all  branches  start  with  ^ are not anchored in multiline mode, and a
5671       match for circumflex is  possible  when  the  startoffset  argument  of
5672       pcre_exec()  is  non-zero. The PCRE_DOLLAR_ENDONLY option is ignored if
5673       PCRE_MULTILINE is set.
5674
5675       Note that the sequences \A, \Z, and \z can be used to match  the  start
5676       and  end of the subject in both modes, and if all branches of a pattern
5677       start with \A it is always anchored, whether or not  PCRE_MULTILINE  is
5678       set.
5679
5680
5681FULL STOP (PERIOD, DOT) AND \N
5682
5683       Outside a character class, a dot in the pattern matches any one charac-
5684       ter in the subject string except (by default) a character  that  signi-
5685       fies the end of a line.
5686
5687       When  a line ending is defined as a single character, dot never matches
5688       that character; when the two-character sequence CRLF is used, dot  does
5689       not  match  CR  if  it  is immediately followed by LF, but otherwise it
5690       matches all characters (including isolated CRs and LFs). When any  Uni-
5691       code  line endings are being recognized, dot does not match CR or LF or
5692       any of the other line ending characters.
5693
5694       The behaviour of dot with regard to newlines can  be  changed.  If  the
5695       PCRE_DOTALL  option  is  set,  a dot matches any one character, without
5696       exception. If the two-character sequence CRLF is present in the subject
5697       string, it takes two dots to match it.
5698
5699       The  handling of dot is entirely independent of the handling of circum-
5700       flex and dollar, the only relationship being  that  they  both  involve
5701       newlines. Dot has no special meaning in a character class.
5702
5703       The  escape  sequence  \N  behaves  like  a  dot, except that it is not
5704       affected by the PCRE_DOTALL option. In  other  words,  it  matches  any
5705       character  except  one that signifies the end of a line. Perl also uses
5706       \N to match characters by name; PCRE does not support this.
5707
5708
5709MATCHING A SINGLE DATA UNIT
5710
5711       Outside a character class, the escape sequence \C matches any one  data
5712       unit,  whether or not a UTF mode is set. In the 8-bit library, one data
5713       unit is one byte; in the 16-bit library it is a  16-bit  unit;  in  the
5714       32-bit  library  it  is  a 32-bit unit. Unlike a dot, \C always matches
5715       line-ending characters. The feature is provided in  Perl  in  order  to
5716       match individual bytes in UTF-8 mode, but it is unclear how it can use-
5717       fully be used. Because \C breaks up  characters  into  individual  data
5718       units,  matching  one unit with \C in a UTF mode means that the rest of
5719       the string may start with a malformed UTF character. This has undefined
5720       results, because PCRE assumes that it is dealing with valid UTF strings
5721       (and by default it checks this at the start of  processing  unless  the
5722       PCRE_NO_UTF8_CHECK,  PCRE_NO_UTF16_CHECK  or PCRE_NO_UTF32_CHECK option
5723       is used).
5724
5725       PCRE does not allow \C to appear in  lookbehind  assertions  (described
5726       below)  in  a UTF mode, because this would make it impossible to calcu-
5727       late the length of the lookbehind.
5728
5729       In general, the \C escape sequence is best avoided. However, one way of
5730       using  it that avoids the problem of malformed UTF characters is to use
5731       a lookahead to check the length of the next character, as in this  pat-
5732       tern,  which  could be used with a UTF-8 string (ignore white space and
5733       line breaks):
5734
5735         (?| (?=[\x00-\x7f])(\C) |
5736             (?=[\x80-\x{7ff}])(\C)(\C) |
5737             (?=[\x{800}-\x{ffff}])(\C)(\C)(\C) |
5738             (?=[\x{10000}-\x{1fffff}])(\C)(\C)(\C)(\C))
5739
5740       A group that starts with (?| resets the capturing  parentheses  numbers
5741       in  each  alternative  (see  "Duplicate Subpattern Numbers" below). The
5742       assertions at the start of each branch check the next  UTF-8  character
5743       for  values  whose encoding uses 1, 2, 3, or 4 bytes, respectively. The
5744       character's individual bytes are then captured by the appropriate  num-
5745       ber of groups.
5746
5747
5748SQUARE BRACKETS AND CHARACTER CLASSES
5749
5750       An opening square bracket introduces a character class, terminated by a
5751       closing square bracket. A closing square bracket on its own is not spe-
5752       cial by default.  However, if the PCRE_JAVASCRIPT_COMPAT option is set,
5753       a lone closing square bracket causes a compile-time error. If a closing
5754       square  bracket  is required as a member of the class, it should be the
5755       first data character in the class  (after  an  initial  circumflex,  if
5756       present) or escaped with a backslash.
5757
5758       A  character  class matches a single character in the subject. In a UTF
5759       mode, the character may be more than one  data  unit  long.  A  matched
5760       character must be in the set of characters defined by the class, unless
5761       the first character in the class definition is a circumflex,  in  which
5762       case the subject character must not be in the set defined by the class.
5763       If a circumflex is actually required as a member of the  class,  ensure
5764       it is not the first character, or escape it with a backslash.
5765
5766       For  example, the character class [aeiou] matches any lower case vowel,
5767       while [^aeiou] matches any character that is not a  lower  case  vowel.
5768       Note that a circumflex is just a convenient notation for specifying the
5769       characters that are in the class by enumerating those that are  not.  A
5770       class  that starts with a circumflex is not an assertion; it still con-
5771       sumes a character from the subject string, and therefore  it  fails  if
5772       the current pointer is at the end of the string.
5773
5774       In UTF-8 (UTF-16, UTF-32) mode, characters with values greater than 255
5775       (0xffff) can be included in a class as a literal string of data  units,
5776       or by using the \x{ escaping mechanism.
5777
5778       When  caseless  matching  is set, any letters in a class represent both
5779       their upper case and lower case versions, so for  example,  a  caseless
5780       [aeiou]  matches  "A"  as well as "a", and a caseless [^aeiou] does not
5781       match "A", whereas a caseful version would. In a UTF mode, PCRE  always
5782       understands  the  concept  of case for characters whose values are less
5783       than 128, so caseless matching is always possible. For characters  with
5784       higher  values,  the  concept  of case is supported if PCRE is compiled
5785       with Unicode property support, but not otherwise.  If you want  to  use
5786       caseless  matching in a UTF mode for characters 128 and above, you must
5787       ensure that PCRE is compiled with Unicode property support as  well  as
5788       with UTF support.
5789
5790       Characters  that  might  indicate  line breaks are never treated in any
5791       special way  when  matching  character  classes,  whatever  line-ending
5792       sequence  is  in  use,  and  whatever  setting  of  the PCRE_DOTALL and
5793       PCRE_MULTILINE options is used. A class such as [^a] always matches one
5794       of these characters.
5795
5796       The  minus (hyphen) character can be used to specify a range of charac-
5797       ters in a character  class.  For  example,  [d-m]  matches  any  letter
5798       between  d  and  m,  inclusive.  If  a minus character is required in a
5799       class, it must be escaped with a backslash  or  appear  in  a  position
5800       where  it cannot be interpreted as indicating a range, typically as the
5801       first or last character in the class, or immediately after a range. For
5802       example,  [b-d-z] matches letters in the range b to d, a hyphen charac-
5803       ter, or z.
5804
5805       It is not possible to have the literal character "]" as the end charac-
5806       ter  of a range. A pattern such as [W-]46] is interpreted as a class of
5807       two characters ("W" and "-") followed by a literal string "46]", so  it
5808       would  match  "W46]"  or  "-46]". However, if the "]" is escaped with a
5809       backslash it is interpreted as the end of range, so [W-\]46] is  inter-
5810       preted  as a class containing a range followed by two other characters.
5811       The octal or hexadecimal representation of "]" can also be used to  end
5812       a range.
5813
5814       An  error  is  generated  if  a POSIX character class (see below) or an
5815       escape sequence other than one that defines a single character  appears
5816       at  a  point  where  a range ending character is expected. For example,
5817       [z-\xff] is valid, but [A-\d] and [A-[:digit:]] are not.
5818
5819       Ranges operate in the collating sequence of character values. They  can
5820       also   be  used  for  characters  specified  numerically,  for  example
5821       [\000-\037]. Ranges can include any characters that are valid  for  the
5822       current mode.
5823
5824       If a range that includes letters is used when caseless matching is set,
5825       it matches the letters in either case. For example, [W-c] is equivalent
5826       to  [][\\^_`wxyzabc],  matched  caselessly,  and  in a non-UTF mode, if
5827       character tables for a French locale are in  use,  [\xc8-\xcb]  matches
5828       accented  E  characters  in both cases. In UTF modes, PCRE supports the
5829       concept of case for characters with values greater than 128  only  when
5830       it is compiled with Unicode property support.
5831
5832       The  character escape sequences \d, \D, \h, \H, \p, \P, \s, \S, \v, \V,
5833       \w, and \W may appear in a character class, and add the characters that
5834       they  match to the class. For example, [\dABCDEF] matches any hexadeci-
5835       mal digit. In UTF modes, the PCRE_UCP option affects  the  meanings  of
5836       \d,  \s,  \w  and  their upper case partners, just as it does when they
5837       appear outside a character class, as described in the section  entitled
5838       "Generic character types" above. The escape sequence \b has a different
5839       meaning inside a character class; it matches the  backspace  character.
5840       The  sequences  \B,  \N,  \R, and \X are not special inside a character
5841       class. Like any other unrecognized escape sequences, they  are  treated
5842       as  the literal characters "B", "N", "R", and "X" by default, but cause
5843       an error if the PCRE_EXTRA option is set.
5844
5845       A circumflex can conveniently be used with  the  upper  case  character
5846       types  to specify a more restricted set of characters than the matching
5847       lower case type.  For example, the class [^\W_] matches any  letter  or
5848       digit, but not underscore, whereas [\w] includes underscore. A positive
5849       character class should be read as "something OR something OR ..." and a
5850       negative class as "NOT something AND NOT something AND NOT ...".
5851
5852       The  only  metacharacters  that are recognized in character classes are
5853       backslash, hyphen (only where it can be  interpreted  as  specifying  a
5854       range),  circumflex  (only  at the start), opening square bracket (only
5855       when it can be interpreted as introducing a POSIX class name, or for  a
5856       special  compatibility  feature  -  see the next two sections), and the
5857       terminating  closing  square  bracket.  However,  escaping  other  non-
5858       alphanumeric characters does no harm.
5859
5860
5861POSIX CHARACTER CLASSES
5862
5863       Perl supports the POSIX notation for character classes. This uses names
5864       enclosed by [: and :] within the enclosing square brackets.  PCRE  also
5865       supports this notation. For example,
5866
5867         [01[:alpha:]%]
5868
5869       matches "0", "1", any alphabetic character, or "%". The supported class
5870       names are:
5871
5872         alnum    letters and digits
5873         alpha    letters
5874         ascii    character codes 0 - 127
5875         blank    space or tab only
5876         cntrl    control characters
5877         digit    decimal digits (same as \d)
5878         graph    printing characters, excluding space
5879         lower    lower case letters
5880         print    printing characters, including space
5881         punct    printing characters, excluding letters and digits and space
5882         space    white space (the same as \s from PCRE 8.34)
5883         upper    upper case letters
5884         word     "word" characters (same as \w)
5885         xdigit   hexadecimal digits
5886
5887       The default "space" characters are HT (9), LF (10), VT (11),  FF  (12),
5888       CR  (13),  and space (32). If locale-specific matching is taking place,
5889       the list of space characters may be different; there may  be  fewer  or
5890       more of them. "Space" used to be different to \s, which did not include
5891       VT, for Perl compatibility.  However, Perl changed at release 5.18, and
5892       PCRE  followed  at release 8.34.  "Space" and \s now match the same set
5893       of characters.
5894
5895       The name "word" is a Perl extension, and "blank"  is  a  GNU  extension
5896       from  Perl  5.8. Another Perl extension is negation, which is indicated
5897       by a ^ character after the colon. For example,
5898
5899         [12[:^digit:]]
5900
5901       matches "1", "2", or any non-digit. PCRE (and Perl) also recognize  the
5902       POSIX syntax [.ch.] and [=ch=] where "ch" is a "collating element", but
5903       these are not supported, and an error is given if they are encountered.
5904
5905       By default, characters with values greater than 128 do not match any of
5906       the  POSIX character classes. However, if the PCRE_UCP option is passed
5907       to pcre_compile(), some of the classes  are  changed  so  that  Unicode
5908       character  properties  are  used. This is achieved by replacing certain
5909       POSIX classes by other sequences, as follows:
5910
5911         [:alnum:]  becomes  \p{Xan}
5912         [:alpha:]  becomes  \p{L}
5913         [:blank:]  becomes  \h
5914         [:digit:]  becomes  \p{Nd}
5915         [:lower:]  becomes  \p{Ll}
5916         [:space:]  becomes  \p{Xps}
5917         [:upper:]  becomes  \p{Lu}
5918         [:word:]   becomes  \p{Xwd}
5919
5920       Negated versions, such as [:^alpha:] use \P instead of \p. Three  other
5921       POSIX classes are handled specially in UCP mode:
5922
5923       [:graph:] This  matches  characters that have glyphs that mark the page
5924                 when printed. In Unicode property terms, it matches all char-
5925                 acters with the L, M, N, P, S, or Cf properties, except for:
5926
5927                   U+061C           Arabic Letter Mark
5928                   U+180E           Mongolian Vowel Separator
5929                   U+2066 - U+2069  Various "isolate"s
5930
5931
5932       [:print:] This  matches  the  same  characters  as [:graph:] plus space
5933                 characters that are not controls, that  is,  characters  with
5934                 the Zs property.
5935
5936       [:punct:] This matches all characters that have the Unicode P (punctua-
5937                 tion) property, plus those characters whose code  points  are
5938                 less than 128 that have the S (Symbol) property.
5939
5940       The  other  POSIX classes are unchanged, and match only characters with
5941       code points less than 128.
5942
5943
5944COMPATIBILITY FEATURE FOR WORD BOUNDARIES
5945
5946       In the POSIX.2 compliant library that was included in 4.4BSD Unix,  the
5947       ugly  syntax  [[:<:]]  and [[:>:]] is used for matching "start of word"
5948       and "end of word". PCRE treats these items as follows:
5949
5950         [[:<:]]  is converted to  \b(?=\w)
5951         [[:>:]]  is converted to  \b(?<=\w)
5952
5953       Only these exact character sequences are recognized. A sequence such as
5954       [a[:<:]b]  provokes  error  for  an unrecognized POSIX class name. This
5955       support is not compatible with Perl. It is provided to help  migrations
5956       from other environments, and is best not used in any new patterns. Note
5957       that \b matches at the start and the end of a word (see "Simple  asser-
5958       tions"  above),  and in a Perl-style pattern the preceding or following
5959       character normally shows which is wanted,  without  the  need  for  the
5960       assertions  that  are used above in order to give exactly the POSIX be-
5961       haviour.
5962
5963
5964VERTICAL BAR
5965
5966       Vertical bar characters are used to separate alternative patterns.  For
5967       example, the pattern
5968
5969         gilbert|sullivan
5970
5971       matches  either "gilbert" or "sullivan". Any number of alternatives may
5972       appear, and an empty  alternative  is  permitted  (matching  the  empty
5973       string). The matching process tries each alternative in turn, from left
5974       to right, and the first one that succeeds is used. If the  alternatives
5975       are  within a subpattern (defined below), "succeeds" means matching the
5976       rest of the main pattern as well as the alternative in the subpattern.
5977
5978
5979INTERNAL OPTION SETTING
5980
5981       The settings of the  PCRE_CASELESS,  PCRE_MULTILINE,  PCRE_DOTALL,  and
5982       PCRE_EXTENDED  options  (which are Perl-compatible) can be changed from
5983       within the pattern by  a  sequence  of  Perl  option  letters  enclosed
5984       between "(?" and ")".  The option letters are
5985
5986         i  for PCRE_CASELESS
5987         m  for PCRE_MULTILINE
5988         s  for PCRE_DOTALL
5989         x  for PCRE_EXTENDED
5990
5991       For example, (?im) sets caseless, multiline matching. It is also possi-
5992       ble to unset these options by preceding the letter with a hyphen, and a
5993       combined  setting and unsetting such as (?im-sx), which sets PCRE_CASE-
5994       LESS and PCRE_MULTILINE while unsetting PCRE_DOTALL and  PCRE_EXTENDED,
5995       is  also  permitted.  If  a  letter  appears  both before and after the
5996       hyphen, the option is unset.
5997
5998       The PCRE-specific options PCRE_DUPNAMES, PCRE_UNGREEDY, and  PCRE_EXTRA
5999       can  be changed in the same way as the Perl-compatible options by using
6000       the characters J, U and X respectively.
6001
6002       When one of these option changes occurs at  top  level  (that  is,  not
6003       inside  subpattern parentheses), the change applies to the remainder of
6004       the pattern that follows. If the change is placed right at the start of
6005       a pattern, PCRE extracts it into the global options (and it will there-
6006       fore show up in data extracted by the pcre_fullinfo() function).
6007
6008       An option change within a subpattern (see below for  a  description  of
6009       subpatterns)  affects only that part of the subpattern that follows it,
6010       so
6011
6012         (a(?i)b)c
6013
6014       matches abc and aBc and no other strings (assuming PCRE_CASELESS is not
6015       used).   By  this means, options can be made to have different settings
6016       in different parts of the pattern. Any changes made in one  alternative
6017       do  carry  on  into subsequent branches within the same subpattern. For
6018       example,
6019
6020         (a(?i)b|c)
6021
6022       matches "ab", "aB", "c", and "C", even though  when  matching  "C"  the
6023       first  branch  is  abandoned before the option setting. This is because
6024       the effects of option settings happen at compile time. There  would  be
6025       some very weird behaviour otherwise.
6026
6027       Note:  There  are  other  PCRE-specific  options that can be set by the
6028       application when the compiling or matching  functions  are  called.  In
6029       some  cases  the  pattern can contain special leading sequences such as
6030       (*CRLF) to override what the application  has  set  or  what  has  been
6031       defaulted.   Details   are  given  in  the  section  entitled  "Newline
6032       sequences" above. There are also the  (*UTF8),  (*UTF16),(*UTF32),  and
6033       (*UCP)  leading sequences that can be used to set UTF and Unicode prop-
6034       erty modes; they are equivalent to setting the  PCRE_UTF8,  PCRE_UTF16,
6035       PCRE_UTF32  and the PCRE_UCP options, respectively. The (*UTF) sequence
6036       is a generic version that can be used with any of the  libraries.  How-
6037       ever,  the  application  can set the PCRE_NEVER_UTF option, which locks
6038       out the use of the (*UTF) sequences.
6039
6040
6041SUBPATTERNS
6042
6043       Subpatterns are delimited by parentheses (round brackets), which can be
6044       nested.  Turning part of a pattern into a subpattern does two things:
6045
6046       1. It localizes a set of alternatives. For example, the pattern
6047
6048         cat(aract|erpillar|)
6049
6050       matches  "cataract",  "caterpillar", or "cat". Without the parentheses,
6051       it would match "cataract", "erpillar" or an empty string.
6052
6053       2. It sets up the subpattern as  a  capturing  subpattern.  This  means
6054       that,  when  the  whole  pattern  matches,  that portion of the subject
6055       string that matched the subpattern is passed back to the caller via the
6056       ovector  argument  of  the matching function. (This applies only to the
6057       traditional matching functions; the DFA matching functions do not  sup-
6058       port capturing.)
6059
6060       Opening parentheses are counted from left to right (starting from 1) to
6061       obtain numbers for the  capturing  subpatterns.  For  example,  if  the
6062       string "the red king" is matched against the pattern
6063
6064         the ((red|white) (king|queen))
6065
6066       the captured substrings are "red king", "red", and "king", and are num-
6067       bered 1, 2, and 3, respectively.
6068
6069       The fact that plain parentheses fulfil  two  functions  is  not  always
6070       helpful.   There are often times when a grouping subpattern is required
6071       without a capturing requirement. If an opening parenthesis is  followed
6072       by  a question mark and a colon, the subpattern does not do any captur-
6073       ing, and is not counted when computing the  number  of  any  subsequent
6074       capturing  subpatterns. For example, if the string "the white queen" is
6075       matched against the pattern
6076
6077         the ((?:red|white) (king|queen))
6078
6079       the captured substrings are "white queen" and "queen", and are numbered
6080       1 and 2. The maximum number of capturing subpatterns is 65535.
6081
6082       As  a  convenient shorthand, if any option settings are required at the
6083       start of a non-capturing subpattern,  the  option  letters  may  appear
6084       between the "?" and the ":". Thus the two patterns
6085
6086         (?i:saturday|sunday)
6087         (?:(?i)saturday|sunday)
6088
6089       match exactly the same set of strings. Because alternative branches are
6090       tried from left to right, and options are not reset until  the  end  of
6091       the  subpattern is reached, an option setting in one branch does affect
6092       subsequent branches, so the above patterns match "SUNDAY"  as  well  as
6093       "Saturday".
6094
6095
6096DUPLICATE SUBPATTERN NUMBERS
6097
6098       Perl 5.10 introduced a feature whereby each alternative in a subpattern
6099       uses the same numbers for its capturing parentheses. Such a  subpattern
6100       starts  with (?| and is itself a non-capturing subpattern. For example,
6101       consider this pattern:
6102
6103         (?|(Sat)ur|(Sun))day
6104
6105       Because the two alternatives are inside a (?| group, both sets of  cap-
6106       turing  parentheses  are  numbered one. Thus, when the pattern matches,
6107       you can look at captured substring number  one,  whichever  alternative
6108       matched.  This  construct  is useful when you want to capture part, but
6109       not all, of one of a number of alternatives. Inside a (?| group, paren-
6110       theses  are  numbered as usual, but the number is reset at the start of
6111       each branch. The numbers of any capturing parentheses that  follow  the
6112       subpattern  start after the highest number used in any branch. The fol-
6113       lowing example is taken from the Perl documentation. The numbers under-
6114       neath show in which buffer the captured content will be stored.
6115
6116         # before  ---------------branch-reset----------- after
6117         / ( a )  (?| x ( y ) z | (p (q) r) | (t) u (v) ) ( z ) /x
6118         # 1            2         2  3        2     3     4
6119
6120       A  back  reference  to a numbered subpattern uses the most recent value
6121       that is set for that number by any subpattern.  The  following  pattern
6122       matches "abcabc" or "defdef":
6123
6124         /(?|(abc)|(def))\1/
6125
6126       In  contrast,  a subroutine call to a numbered subpattern always refers
6127       to the first one in the pattern with the given  number.  The  following
6128       pattern matches "abcabc" or "defabc":
6129
6130         /(?|(abc)|(def))(?1)/
6131
6132       If  a condition test for a subpattern's having matched refers to a non-
6133       unique number, the test is true if any of the subpatterns of that  num-
6134       ber have matched.
6135
6136       An  alternative approach to using this "branch reset" feature is to use
6137       duplicate named subpatterns, as described in the next section.
6138
6139
6140NAMED SUBPATTERNS
6141
6142       Identifying capturing parentheses by number is simple, but  it  can  be
6143       very  hard  to keep track of the numbers in complicated regular expres-
6144       sions. Furthermore, if an  expression  is  modified,  the  numbers  may
6145       change.  To help with this difficulty, PCRE supports the naming of sub-
6146       patterns. This feature was not added to Perl until release 5.10. Python
6147       had  the  feature earlier, and PCRE introduced it at release 4.0, using
6148       the Python syntax. PCRE now supports both the Perl and the Python  syn-
6149       tax.  Perl  allows  identically  numbered subpatterns to have different
6150       names, but PCRE does not.
6151
6152       In PCRE, a subpattern can be named in one of three  ways:  (?<name>...)
6153       or  (?'name'...)  as in Perl, or (?P<name>...) as in Python. References
6154       to capturing parentheses from other parts of the pattern, such as  back
6155       references,  recursion,  and conditions, can be made by name as well as
6156       by number.
6157
6158       Names consist of up to 32 alphanumeric characters and underscores,  but
6159       must  start  with  a  non-digit.  Named capturing parentheses are still
6160       allocated numbers as well as names, exactly as if the  names  were  not
6161       present.  The PCRE API provides function calls for extracting the name-
6162       to-number translation table from a compiled pattern. There  is  also  a
6163       convenience function for extracting a captured substring by name.
6164
6165       By  default, a name must be unique within a pattern, but it is possible
6166       to relax this constraint by setting the PCRE_DUPNAMES option at compile
6167       time.  (Duplicate  names are also always permitted for subpatterns with
6168       the same number, set up as described in the previous  section.)  Dupli-
6169       cate  names  can  be useful for patterns where only one instance of the
6170       named parentheses can match. Suppose you want to match the  name  of  a
6171       weekday,  either as a 3-letter abbreviation or as the full name, and in
6172       both cases you want to extract the abbreviation. This pattern (ignoring
6173       the line breaks) does the job:
6174
6175         (?<DN>Mon|Fri|Sun)(?:day)?|
6176         (?<DN>Tue)(?:sday)?|
6177         (?<DN>Wed)(?:nesday)?|
6178         (?<DN>Thu)(?:rsday)?|
6179         (?<DN>Sat)(?:urday)?
6180
6181       There  are  five capturing substrings, but only one is ever set after a
6182       match.  (An alternative way of solving this problem is to use a "branch
6183       reset" subpattern, as described in the previous section.)
6184
6185       The  convenience  function  for extracting the data by name returns the
6186       substring for the first (and in this example, the only)  subpattern  of
6187       that  name  that  matched.  This saves searching to find which numbered
6188       subpattern it was.
6189
6190       If you make a back reference to  a  non-unique  named  subpattern  from
6191       elsewhere  in the pattern, the subpatterns to which the name refers are
6192       checked in the order in which they appear in the overall  pattern.  The
6193       first one that is set is used for the reference. For example, this pat-
6194       tern matches both "foofoo" and "barbar" but not "foobar" or "barfoo":
6195
6196         (?:(?<n>foo)|(?<n>bar))\k<n>
6197
6198
6199       If you make a subroutine call to a non-unique named subpattern, the one
6200       that  corresponds  to  the first occurrence of the name is used. In the
6201       absence of duplicate numbers (see the previous section) this is the one
6202       with the lowest number.
6203
6204       If you use a named reference in a condition test (see the section about
6205       conditions below), either to check whether a subpattern has matched, or
6206       to  check for recursion, all subpatterns with the same name are tested.
6207       If the condition is true for any one of them, the overall condition  is
6208       true.  This  is  the  same  behaviour as testing by number. For further
6209       details of the interfaces  for  handling  named  subpatterns,  see  the
6210       pcreapi documentation.
6211
6212       Warning: You cannot use different names to distinguish between two sub-
6213       patterns with the same number because PCRE uses only the  numbers  when
6214       matching. For this reason, an error is given at compile time if differ-
6215       ent names are given to subpatterns with the same number.  However,  you
6216       can always give the same name to subpatterns with the same number, even
6217       when PCRE_DUPNAMES is not set.
6218
6219
6220REPETITION
6221
6222       Repetition is specified by quantifiers, which can  follow  any  of  the
6223       following items:
6224
6225         a literal data character
6226         the dot metacharacter
6227         the \C escape sequence
6228         the \X escape sequence
6229         the \R escape sequence
6230         an escape such as \d or \pL that matches a single character
6231         a character class
6232         a back reference (see next section)
6233         a parenthesized subpattern (including assertions)
6234         a subroutine call to a subpattern (recursive or otherwise)
6235
6236       The  general repetition quantifier specifies a minimum and maximum num-
6237       ber of permitted matches, by giving the two numbers in  curly  brackets
6238       (braces),  separated  by  a comma. The numbers must be less than 65536,
6239       and the first must be less than or equal to the second. For example:
6240
6241         z{2,4}
6242
6243       matches "zz", "zzz", or "zzzz". A closing brace on its  own  is  not  a
6244       special  character.  If  the second number is omitted, but the comma is
6245       present, there is no upper limit; if the second number  and  the  comma
6246       are  both omitted, the quantifier specifies an exact number of required
6247       matches. Thus
6248
6249         [aeiou]{3,}
6250
6251       matches at least 3 successive vowels, but may match many more, while
6252
6253         \d{8}
6254
6255       matches exactly 8 digits. An opening curly bracket that  appears  in  a
6256       position  where a quantifier is not allowed, or one that does not match
6257       the syntax of a quantifier, is taken as a literal character. For  exam-
6258       ple, {,6} is not a quantifier, but a literal string of four characters.
6259
6260       In UTF modes, quantifiers apply to characters rather than to individual
6261       data units. Thus, for example, \x{100}{2} matches two characters,  each
6262       of which is represented by a two-byte sequence in a UTF-8 string. Simi-
6263       larly, \X{3} matches three Unicode extended grapheme clusters, each  of
6264       which  may  be  several  data  units long (and they may be of different
6265       lengths).
6266
6267       The quantifier {0} is permitted, causing the expression to behave as if
6268       the previous item and the quantifier were not present. This may be use-
6269       ful for subpatterns that are referenced as subroutines  from  elsewhere
6270       in the pattern (but see also the section entitled "Defining subpatterns
6271       for use by reference only" below). Items other  than  subpatterns  that
6272       have a {0} quantifier are omitted from the compiled pattern.
6273
6274       For  convenience, the three most common quantifiers have single-charac-
6275       ter abbreviations:
6276
6277         *    is equivalent to {0,}
6278         +    is equivalent to {1,}
6279         ?    is equivalent to {0,1}
6280
6281       It is possible to construct infinite loops by  following  a  subpattern
6282       that can match no characters with a quantifier that has no upper limit,
6283       for example:
6284
6285         (a?)*
6286
6287       Earlier versions of Perl and PCRE used to give an error at compile time
6288       for  such  patterns. However, because there are cases where this can be
6289       useful, such patterns are now accepted, but if any  repetition  of  the
6290       subpattern  does in fact match no characters, the loop is forcibly bro-
6291       ken.
6292
6293       By default, the quantifiers are "greedy", that is, they match  as  much
6294       as  possible  (up  to  the  maximum number of permitted times), without
6295       causing the rest of the pattern to fail. The classic example  of  where
6296       this gives problems is in trying to match comments in C programs. These
6297       appear between /* and */ and within the comment,  individual  *  and  /
6298       characters  may  appear. An attempt to match C comments by applying the
6299       pattern
6300
6301         /\*.*\*/
6302
6303       to the string
6304
6305         /* first comment */  not comment  /* second comment */
6306
6307       fails, because it matches the entire string owing to the greediness  of
6308       the .*  item.
6309
6310       However,  if  a quantifier is followed by a question mark, it ceases to
6311       be greedy, and instead matches the minimum number of times possible, so
6312       the pattern
6313
6314         /\*.*?\*/
6315
6316       does  the  right  thing with the C comments. The meaning of the various
6317       quantifiers is not otherwise changed,  just  the  preferred  number  of
6318       matches.   Do  not  confuse this use of question mark with its use as a
6319       quantifier in its own right. Because it has two uses, it can  sometimes
6320       appear doubled, as in
6321
6322         \d??\d
6323
6324       which matches one digit by preference, but can match two if that is the
6325       only way the rest of the pattern matches.
6326
6327       If the PCRE_UNGREEDY option is set (an option that is not available  in
6328       Perl),  the  quantifiers are not greedy by default, but individual ones
6329       can be made greedy by following them with a  question  mark.  In  other
6330       words, it inverts the default behaviour.
6331
6332       When  a  parenthesized  subpattern  is quantified with a minimum repeat
6333       count that is greater than 1 or with a limited maximum, more memory  is
6334       required  for  the  compiled  pattern, in proportion to the size of the
6335       minimum or maximum.
6336
6337       If a pattern starts with .* or .{0,} and the PCRE_DOTALL option (equiv-
6338       alent  to  Perl's  /s) is set, thus allowing the dot to match newlines,
6339       the pattern is implicitly anchored, because whatever  follows  will  be
6340       tried  against every character position in the subject string, so there
6341       is no point in retrying the overall match at  any  position  after  the
6342       first.  PCRE  normally treats such a pattern as though it were preceded
6343       by \A.
6344
6345       In cases where it is known that the subject  string  contains  no  new-
6346       lines,  it  is  worth setting PCRE_DOTALL in order to obtain this opti-
6347       mization, or alternatively using ^ to indicate anchoring explicitly.
6348
6349       However, there are some cases where the optimization  cannot  be  used.
6350       When .*  is inside capturing parentheses that are the subject of a back
6351       reference elsewhere in the pattern, a match at the start may fail where
6352       a later one succeeds. Consider, for example:
6353
6354         (.*)abc\1
6355
6356       If  the subject is "xyz123abc123" the match point is the fourth charac-
6357       ter. For this reason, such a pattern is not implicitly anchored.
6358
6359       Another case where implicit anchoring is not applied is when the  lead-
6360       ing  .* is inside an atomic group. Once again, a match at the start may
6361       fail where a later one succeeds. Consider this pattern:
6362
6363         (?>.*?a)b
6364
6365       It matches "ab" in the subject "aab". The use of the backtracking  con-
6366       trol verbs (*PRUNE) and (*SKIP) also disable this optimization.
6367
6368       When a capturing subpattern is repeated, the value captured is the sub-
6369       string that matched the final iteration. For example, after
6370
6371         (tweedle[dume]{3}\s*)+
6372
6373       has matched "tweedledum tweedledee" the value of the captured substring
6374       is  "tweedledee".  However,  if there are nested capturing subpatterns,
6375       the corresponding captured values may have been set in previous  itera-
6376       tions. For example, after
6377
6378         /(a|(b))+/
6379
6380       matches "aba" the value of the second captured substring is "b".
6381
6382
6383ATOMIC GROUPING AND POSSESSIVE QUANTIFIERS
6384
6385       With  both  maximizing ("greedy") and minimizing ("ungreedy" or "lazy")
6386       repetition, failure of what follows normally causes the  repeated  item
6387       to  be  re-evaluated to see if a different number of repeats allows the
6388       rest of the pattern to match. Sometimes it is useful to  prevent  this,
6389       either  to  change the nature of the match, or to cause it fail earlier
6390       than it otherwise might, when the author of the pattern knows there  is
6391       no point in carrying on.
6392
6393       Consider,  for  example, the pattern \d+foo when applied to the subject
6394       line
6395
6396         123456bar
6397
6398       After matching all 6 digits and then failing to match "foo", the normal
6399       action  of  the matcher is to try again with only 5 digits matching the
6400       \d+ item, and then with  4,  and  so  on,  before  ultimately  failing.
6401       "Atomic  grouping"  (a  term taken from Jeffrey Friedl's book) provides
6402       the means for specifying that once a subpattern has matched, it is  not
6403       to be re-evaluated in this way.
6404
6405       If  we  use atomic grouping for the previous example, the matcher gives
6406       up immediately on failing to match "foo" the first time.  The  notation
6407       is a kind of special parenthesis, starting with (?> as in this example:
6408
6409         (?>\d+)foo
6410
6411       This  kind  of  parenthesis "locks up" the  part of the pattern it con-
6412       tains once it has matched, and a failure further into  the  pattern  is
6413       prevented  from  backtracking into it. Backtracking past it to previous
6414       items, however, works as normal.
6415
6416       An alternative description is that a subpattern of  this  type  matches
6417       the  string  of  characters  that an identical standalone pattern would
6418       match, if anchored at the current point in the subject string.
6419
6420       Atomic grouping subpatterns are not capturing subpatterns. Simple cases
6421       such as the above example can be thought of as a maximizing repeat that
6422       must swallow everything it can. So, while both \d+ and  \d+?  are  pre-
6423       pared  to  adjust  the number of digits they match in order to make the
6424       rest of the pattern match, (?>\d+) can only match an entire sequence of
6425       digits.
6426
6427       Atomic  groups in general can of course contain arbitrarily complicated
6428       subpatterns, and can be nested. However, when  the  subpattern  for  an
6429       atomic group is just a single repeated item, as in the example above, a
6430       simpler notation, called a "possessive quantifier" can  be  used.  This
6431       consists  of  an  additional  + character following a quantifier. Using
6432       this notation, the previous example can be rewritten as
6433
6434         \d++foo
6435
6436       Note that a possessive quantifier can be used with an entire group, for
6437       example:
6438
6439         (abc|xyz){2,3}+
6440
6441       Possessive   quantifiers   are   always  greedy;  the  setting  of  the
6442       PCRE_UNGREEDY option is ignored. They are a convenient notation for the
6443       simpler  forms  of atomic group. However, there is no difference in the
6444       meaning of a possessive quantifier and  the  equivalent  atomic  group,
6445       though  there  may  be a performance difference; possessive quantifiers
6446       should be slightly faster.
6447
6448       The possessive quantifier syntax is an extension to the Perl  5.8  syn-
6449       tax.   Jeffrey  Friedl  originated the idea (and the name) in the first
6450       edition of his book. Mike McCloskey liked it, so implemented it when he
6451       built  Sun's Java package, and PCRE copied it from there. It ultimately
6452       found its way into Perl at release 5.10.
6453
6454       PCRE has an optimization that automatically "possessifies" certain sim-
6455       ple  pattern  constructs.  For  example, the sequence A+B is treated as
6456       A++B because there is no point in backtracking into a sequence  of  A's
6457       when B must follow.
6458
6459       When  a  pattern  contains an unlimited repeat inside a subpattern that
6460       can itself be repeated an unlimited number of  times,  the  use  of  an
6461       atomic  group  is  the  only way to avoid some failing matches taking a
6462       very long time indeed. The pattern
6463
6464         (\D+|<\d+>)*[!?]
6465
6466       matches an unlimited number of substrings that either consist  of  non-
6467       digits,  or  digits  enclosed in <>, followed by either ! or ?. When it
6468       matches, it runs quickly. However, if it is applied to
6469
6470         aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
6471
6472       it takes a long time before reporting  failure.  This  is  because  the
6473       string  can be divided between the internal \D+ repeat and the external
6474       * repeat in a large number of ways, and all  have  to  be  tried.  (The
6475       example  uses  [!?]  rather than a single character at the end, because
6476       both PCRE and Perl have an optimization that allows  for  fast  failure
6477       when  a single character is used. They remember the last single charac-
6478       ter that is required for a match, and fail early if it is  not  present
6479       in  the  string.)  If  the pattern is changed so that it uses an atomic
6480       group, like this:
6481
6482         ((?>\D+)|<\d+>)*[!?]
6483
6484       sequences of non-digits cannot be broken, and failure happens quickly.
6485
6486
6487BACK REFERENCES
6488
6489       Outside a character class, a backslash followed by a digit greater than
6490       0 (and possibly further digits) is a back reference to a capturing sub-
6491       pattern earlier (that is, to its left) in the pattern,  provided  there
6492       have been that many previous capturing left parentheses.
6493
6494       However, if the decimal number following the backslash is less than 10,
6495       it is always taken as a back reference, and causes  an  error  only  if
6496       there  are  not that many capturing left parentheses in the entire pat-
6497       tern. In other words, the parentheses that are referenced need  not  be
6498       to  the left of the reference for numbers less than 10. A "forward back
6499       reference" of this type can make sense when a  repetition  is  involved
6500       and  the  subpattern to the right has participated in an earlier itera-
6501       tion.
6502
6503       It is not possible to have a numerical "forward back  reference"  to  a
6504       subpattern  whose  number  is  10  or  more using this syntax because a
6505       sequence such as \50 is interpreted as a character  defined  in  octal.
6506       See the subsection entitled "Non-printing characters" above for further
6507       details of the handling of digits following a backslash.  There  is  no
6508       such  problem  when named parentheses are used. A back reference to any
6509       subpattern is possible using named parentheses (see below).
6510
6511       Another way of avoiding the ambiguity inherent in  the  use  of  digits
6512       following  a  backslash  is  to use the \g escape sequence. This escape
6513       must be followed by an unsigned number or a negative number, optionally
6514       enclosed in braces. These examples are all identical:
6515
6516         (ring), \1
6517         (ring), \g1
6518         (ring), \g{1}
6519
6520       An  unsigned number specifies an absolute reference without the ambigu-
6521       ity that is present in the older syntax. It is also useful when literal
6522       digits follow the reference. A negative number is a relative reference.
6523       Consider this example:
6524
6525         (abc(def)ghi)\g{-1}
6526
6527       The sequence \g{-1} is a reference to the most recently started captur-
6528       ing subpattern before \g, that is, is it equivalent to \2 in this exam-
6529       ple.  Similarly, \g{-2} would be equivalent to \1. The use of  relative
6530       references  can  be helpful in long patterns, and also in patterns that
6531       are created by  joining  together  fragments  that  contain  references
6532       within themselves.
6533
6534       A  back  reference matches whatever actually matched the capturing sub-
6535       pattern in the current subject string, rather  than  anything  matching
6536       the subpattern itself (see "Subpatterns as subroutines" below for a way
6537       of doing that). So the pattern
6538
6539         (sens|respons)e and \1ibility
6540
6541       matches "sense and sensibility" and "response and responsibility",  but
6542       not  "sense and responsibility". If caseful matching is in force at the
6543       time of the back reference, the case of letters is relevant. For  exam-
6544       ple,
6545
6546         ((?i)rah)\s+\1
6547
6548       matches  "rah  rah"  and  "RAH RAH", but not "RAH rah", even though the
6549       original capturing subpattern is matched caselessly.
6550
6551       There are several different ways of writing back  references  to  named
6552       subpatterns.  The  .NET syntax \k{name} and the Perl syntax \k<name> or
6553       \k'name' are supported, as is the Python syntax (?P=name). Perl  5.10's
6554       unified back reference syntax, in which \g can be used for both numeric
6555       and named references, is also supported. We  could  rewrite  the  above
6556       example in any of the following ways:
6557
6558         (?<p1>(?i)rah)\s+\k<p1>
6559         (?'p1'(?i)rah)\s+\k{p1}
6560         (?P<p1>(?i)rah)\s+(?P=p1)
6561         (?<p1>(?i)rah)\s+\g{p1}
6562
6563       A  subpattern  that  is  referenced  by  name may appear in the pattern
6564       before or after the reference.
6565
6566       There may be more than one back reference to the same subpattern. If  a
6567       subpattern  has  not actually been used in a particular match, any back
6568       references to it always fail by default. For example, the pattern
6569
6570         (a|(bc))\2
6571
6572       always fails if it starts to match "a" rather than  "bc".  However,  if
6573       the PCRE_JAVASCRIPT_COMPAT option is set at compile time, a back refer-
6574       ence to an unset value matches an empty string.
6575
6576       Because there may be many capturing parentheses in a pattern, all  dig-
6577       its  following a backslash are taken as part of a potential back refer-
6578       ence number.  If the pattern continues with  a  digit  character,  some
6579       delimiter  must  be  used  to  terminate  the  back  reference.  If the
6580       PCRE_EXTENDED option is set, this can be white  space.  Otherwise,  the
6581       \g{ syntax or an empty comment (see "Comments" below) can be used.
6582
6583   Recursive back references
6584
6585       A  back reference that occurs inside the parentheses to which it refers
6586       fails when the subpattern is first used, so, for example,  (a\1)  never
6587       matches.   However,  such references can be useful inside repeated sub-
6588       patterns. For example, the pattern
6589
6590         (a|b\1)+
6591
6592       matches any number of "a"s and also "aba", "ababbaa" etc. At each iter-
6593       ation  of  the  subpattern,  the  back  reference matches the character
6594       string corresponding to the previous iteration. In order  for  this  to
6595       work,  the  pattern must be such that the first iteration does not need
6596       to match the back reference. This can be done using alternation, as  in
6597       the example above, or by a quantifier with a minimum of zero.
6598
6599       Back  references of this type cause the group that they reference to be
6600       treated as an atomic group.  Once the whole group has been  matched,  a
6601       subsequent  matching  failure cannot cause backtracking into the middle
6602       of the group.
6603
6604
6605ASSERTIONS
6606
6607       An assertion is a test on the characters  following  or  preceding  the
6608       current  matching  point that does not actually consume any characters.
6609       The simple assertions coded as \b, \B, \A, \G, \Z,  \z,  ^  and  $  are
6610       described above.
6611
6612       More  complicated  assertions  are  coded as subpatterns. There are two
6613       kinds: those that look ahead of the current  position  in  the  subject
6614       string,  and  those  that  look  behind  it. An assertion subpattern is
6615       matched in the normal way, except that it does not  cause  the  current
6616       matching position to be changed.
6617
6618       Assertion  subpatterns are not capturing subpatterns. If such an asser-
6619       tion contains capturing subpatterns within it, these  are  counted  for
6620       the  purposes  of numbering the capturing subpatterns in the whole pat-
6621       tern. However, substring capturing is carried  out  only  for  positive
6622       assertions. (Perl sometimes, but not always, does do capturing in nega-
6623       tive assertions.)
6624
6625       For compatibility with Perl, assertion  subpatterns  may  be  repeated;
6626       though  it  makes  no sense to assert the same thing several times, the
6627       side effect of capturing parentheses may  occasionally  be  useful.  In
6628       practice, there only three cases:
6629
6630       (1)  If  the  quantifier  is  {0}, the assertion is never obeyed during
6631       matching.  However, it may  contain  internal  capturing  parenthesized
6632       groups that are called from elsewhere via the subroutine mechanism.
6633
6634       (2)  If quantifier is {0,n} where n is greater than zero, it is treated
6635       as if it were {0,1}. At run time, the rest  of  the  pattern  match  is
6636       tried with and without the assertion, the order depending on the greed-
6637       iness of the quantifier.
6638
6639       (3) If the minimum repetition is greater than zero, the  quantifier  is
6640       ignored.   The  assertion  is  obeyed just once when encountered during
6641       matching.
6642
6643   Lookahead assertions
6644
6645       Lookahead assertions start with (?= for positive assertions and (?! for
6646       negative assertions. For example,
6647
6648         \w+(?=;)
6649
6650       matches  a word followed by a semicolon, but does not include the semi-
6651       colon in the match, and
6652
6653         foo(?!bar)
6654
6655       matches any occurrence of "foo" that is not  followed  by  "bar".  Note
6656       that the apparently similar pattern
6657
6658         (?!foo)bar
6659
6660       does  not  find  an  occurrence  of "bar" that is preceded by something
6661       other than "foo"; it finds any occurrence of "bar" whatsoever,  because
6662       the assertion (?!foo) is always true when the next three characters are
6663       "bar". A lookbehind assertion is needed to achieve the other effect.
6664
6665       If you want to force a matching failure at some point in a pattern, the
6666       most  convenient  way  to  do  it  is with (?!) because an empty string
6667       always matches, so an assertion that requires there not to be an  empty
6668       string must always fail.  The backtracking control verb (*FAIL) or (*F)
6669       is a synonym for (?!).
6670
6671   Lookbehind assertions
6672
6673       Lookbehind assertions start with (?<= for positive assertions and  (?<!
6674       for negative assertions. For example,
6675
6676         (?<!foo)bar
6677
6678       does  find  an  occurrence  of "bar" that is not preceded by "foo". The
6679       contents of a lookbehind assertion are restricted  such  that  all  the
6680       strings it matches must have a fixed length. However, if there are sev-
6681       eral top-level alternatives, they do not all  have  to  have  the  same
6682       fixed length. Thus
6683
6684         (?<=bullock|donkey)
6685
6686       is permitted, but
6687
6688         (?<!dogs?|cats?)
6689
6690       causes  an  error at compile time. Branches that match different length
6691       strings are permitted only at the top level of a lookbehind  assertion.
6692       This is an extension compared with Perl, which requires all branches to
6693       match the same length of string. An assertion such as
6694
6695         (?<=ab(c|de))
6696
6697       is not permitted, because its single top-level  branch  can  match  two
6698       different lengths, but it is acceptable to PCRE if rewritten to use two
6699       top-level branches:
6700
6701         (?<=abc|abde)
6702
6703       In some cases, the escape sequence \K (see above) can be  used  instead
6704       of a lookbehind assertion to get round the fixed-length restriction.
6705
6706       The  implementation  of lookbehind assertions is, for each alternative,
6707       to temporarily move the current position back by the fixed  length  and
6708       then try to match. If there are insufficient characters before the cur-
6709       rent position, the assertion fails.
6710
6711       In a UTF mode, PCRE does not allow the \C escape (which matches a  sin-
6712       gle  data  unit even in a UTF mode) to appear in lookbehind assertions,
6713       because it makes it impossible to calculate the length of  the  lookbe-
6714       hind.  The \X and \R escapes, which can match different numbers of data
6715       units, are also not permitted.
6716
6717       "Subroutine" calls (see below) such as (?2) or (?&X) are  permitted  in
6718       lookbehinds,  as  long as the subpattern matches a fixed-length string.
6719       Recursion, however, is not supported.
6720
6721       Possessive quantifiers can  be  used  in  conjunction  with  lookbehind
6722       assertions to specify efficient matching of fixed-length strings at the
6723       end of subject strings. Consider a simple pattern such as
6724
6725         abcd$
6726
6727       when applied to a long string that does  not  match.  Because  matching
6728       proceeds from left to right, PCRE will look for each "a" in the subject
6729       and then see if what follows matches the rest of the  pattern.  If  the
6730       pattern is specified as
6731
6732         ^.*abcd$
6733
6734       the  initial .* matches the entire string at first, but when this fails
6735       (because there is no following "a"), it backtracks to match all but the
6736       last  character,  then all but the last two characters, and so on. Once
6737       again the search for "a" covers the entire string, from right to  left,
6738       so we are no better off. However, if the pattern is written as
6739
6740         ^.*+(?<=abcd)
6741
6742       there  can  be  no backtracking for the .*+ item; it can match only the
6743       entire string. The subsequent lookbehind assertion does a  single  test
6744       on  the last four characters. If it fails, the match fails immediately.
6745       For long strings, this approach makes a significant difference  to  the
6746       processing time.
6747
6748   Using multiple assertions
6749
6750       Several assertions (of any sort) may occur in succession. For example,
6751
6752         (?<=\d{3})(?<!999)foo
6753
6754       matches  "foo" preceded by three digits that are not "999". Notice that
6755       each of the assertions is applied independently at the  same  point  in
6756       the  subject  string.  First  there  is a check that the previous three
6757       characters are all digits, and then there is  a  check  that  the  same
6758       three characters are not "999".  This pattern does not match "foo" pre-
6759       ceded by six characters, the first of which are  digits  and  the  last
6760       three  of  which  are not "999". For example, it doesn't match "123abc-
6761       foo". A pattern to do that is
6762
6763         (?<=\d{3}...)(?<!999)foo
6764
6765       This time the first assertion looks at the  preceding  six  characters,
6766       checking that the first three are digits, and then the second assertion
6767       checks that the preceding three characters are not "999".
6768
6769       Assertions can be nested in any combination. For example,
6770
6771         (?<=(?<!foo)bar)baz
6772
6773       matches an occurrence of "baz" that is preceded by "bar" which in  turn
6774       is not preceded by "foo", while
6775
6776         (?<=\d{3}(?!999)...)foo
6777
6778       is  another pattern that matches "foo" preceded by three digits and any
6779       three characters that are not "999".
6780
6781
6782CONDITIONAL SUBPATTERNS
6783
6784       It is possible to cause the matching process to obey a subpattern  con-
6785       ditionally  or to choose between two alternative subpatterns, depending
6786       on the result of an assertion, or whether a specific capturing  subpat-
6787       tern  has  already  been matched. The two possible forms of conditional
6788       subpattern are:
6789
6790         (?(condition)yes-pattern)
6791         (?(condition)yes-pattern|no-pattern)
6792
6793       If the condition is satisfied, the yes-pattern is used;  otherwise  the
6794       no-pattern  (if  present)  is used. If there are more than two alterna-
6795       tives in the subpattern, a compile-time error occurs. Each of  the  two
6796       alternatives may itself contain nested subpatterns of any form, includ-
6797       ing  conditional  subpatterns;  the  restriction  to  two  alternatives
6798       applies only at the level of the condition. This pattern fragment is an
6799       example where the alternatives are complex:
6800
6801         (?(1) (A|B|C) | (D | (?(2)E|F) | E) )
6802
6803
6804       There are four kinds of condition: references  to  subpatterns,  refer-
6805       ences to recursion, a pseudo-condition called DEFINE, and assertions.
6806
6807   Checking for a used subpattern by number
6808
6809       If  the  text between the parentheses consists of a sequence of digits,
6810       the condition is true if a capturing subpattern of that number has pre-
6811       viously  matched.  If  there is more than one capturing subpattern with
6812       the same number (see the earlier  section  about  duplicate  subpattern
6813       numbers),  the condition is true if any of them have matched. An alter-
6814       native notation is to precede the digits with a plus or minus sign.  In
6815       this  case, the subpattern number is relative rather than absolute. The
6816       most recently opened parentheses can be referenced by (?(-1), the  next
6817       most  recent  by (?(-2), and so on. Inside loops it can also make sense
6818       to refer to subsequent groups. The next parentheses to be opened can be
6819       referenced  as (?(+1), and so on. (The value zero in any of these forms
6820       is not used; it provokes a compile-time error.)
6821
6822       Consider the following pattern, which  contains  non-significant  white
6823       space to make it more readable (assume the PCRE_EXTENDED option) and to
6824       divide it into three parts for ease of discussion:
6825
6826         ( \( )?    [^()]+    (?(1) \) )
6827
6828       The first part matches an optional opening  parenthesis,  and  if  that
6829       character is present, sets it as the first captured substring. The sec-
6830       ond part matches one or more characters that are not  parentheses.  The
6831       third  part  is  a conditional subpattern that tests whether or not the
6832       first set of parentheses matched. If they  did,  that  is,  if  subject
6833       started  with an opening parenthesis, the condition is true, and so the
6834       yes-pattern is executed and a closing parenthesis is  required.  Other-
6835       wise,  since no-pattern is not present, the subpattern matches nothing.
6836       In other words, this pattern matches  a  sequence  of  non-parentheses,
6837       optionally enclosed in parentheses.
6838
6839       If  you  were  embedding  this pattern in a larger one, you could use a
6840       relative reference:
6841
6842         ...other stuff... ( \( )?    [^()]+    (?(-1) \) ) ...
6843
6844       This makes the fragment independent of the parentheses  in  the  larger
6845       pattern.
6846
6847   Checking for a used subpattern by name
6848
6849       Perl  uses  the  syntax  (?(<name>)...) or (?('name')...) to test for a
6850       used subpattern by name. For compatibility  with  earlier  versions  of
6851       PCRE,  which  had this facility before Perl, the syntax (?(name)...) is
6852       also recognized.
6853
6854       Rewriting the above example to use a named subpattern gives this:
6855
6856         (?<OPEN> \( )?    [^()]+    (?(<OPEN>) \) )
6857
6858       If the name used in a condition of this kind is a duplicate,  the  test
6859       is  applied to all subpatterns of the same name, and is true if any one
6860       of them has matched.
6861
6862   Checking for pattern recursion
6863
6864       If the condition is the string (R), and there is no subpattern with the
6865       name  R, the condition is true if a recursive call to the whole pattern
6866       or any subpattern has been made. If digits or a name preceded by amper-
6867       sand follow the letter R, for example:
6868
6869         (?(R3)...) or (?(R&name)...)
6870
6871       the condition is true if the most recent recursion is into a subpattern
6872       whose number or name is given. This condition does not check the entire
6873       recursion  stack.  If  the  name  used in a condition of this kind is a
6874       duplicate, the test is applied to all subpatterns of the same name, and
6875       is true if any one of them is the most recent recursion.
6876
6877       At  "top  level",  all  these recursion test conditions are false.  The
6878       syntax for recursive patterns is described below.
6879
6880   Defining subpatterns for use by reference only
6881
6882       If the condition is the string (DEFINE), and  there  is  no  subpattern
6883       with  the  name  DEFINE,  the  condition is always false. In this case,
6884       there may be only one alternative  in  the  subpattern.  It  is  always
6885       skipped  if  control  reaches  this  point  in the pattern; the idea of
6886       DEFINE is that it can be used to define subroutines that can be  refer-
6887       enced  from elsewhere. (The use of subroutines is described below.) For
6888       example, a pattern to match an IPv4 address  such  as  "192.168.23.245"
6889       could be written like this (ignore white space and line breaks):
6890
6891         (?(DEFINE) (?<byte> 2[0-4]\d | 25[0-5] | 1\d\d | [1-9]?\d) )
6892         \b (?&byte) (\.(?&byte)){3} \b
6893
6894       The  first part of the pattern is a DEFINE group inside which a another
6895       group named "byte" is defined. This matches an individual component  of
6896       an  IPv4  address  (a number less than 256). When matching takes place,
6897       this part of the pattern is skipped because DEFINE acts  like  a  false
6898       condition.  The  rest of the pattern uses references to the named group
6899       to match the four dot-separated components of an IPv4 address,  insist-
6900       ing on a word boundary at each end.
6901
6902   Assertion conditions
6903
6904       If  the  condition  is  not  in any of the above formats, it must be an
6905       assertion.  This may be a positive or negative lookahead or  lookbehind
6906       assertion.  Consider  this  pattern,  again  containing non-significant
6907       white space, and with the two alternatives on the second line:
6908
6909         (?(?=[^a-z]*[a-z])
6910         \d{2}-[a-z]{3}-\d{2}  |  \d{2}-\d{2}-\d{2} )
6911
6912       The condition  is  a  positive  lookahead  assertion  that  matches  an
6913       optional  sequence of non-letters followed by a letter. In other words,
6914       it tests for the presence of at least one letter in the subject.  If  a
6915       letter  is found, the subject is matched against the first alternative;
6916       otherwise it is  matched  against  the  second.  This  pattern  matches
6917       strings  in  one  of the two forms dd-aaa-dd or dd-dd-dd, where aaa are
6918       letters and dd are digits.
6919
6920
6921COMMENTS
6922
6923       There are two ways of including comments in patterns that are processed
6924       by PCRE. In both cases, the start of the comment must not be in a char-
6925       acter class, nor in the middle of any other sequence of related charac-
6926       ters  such  as  (?: or a subpattern name or number. The characters that
6927       make up a comment play no part in the pattern matching.
6928
6929       The sequence (?# marks the start of a comment that continues up to  the
6930       next  closing parenthesis. Nested parentheses are not permitted. If the
6931       PCRE_EXTENDED option is set, an unescaped # character also introduces a
6932       comment,  which  in  this  case continues to immediately after the next
6933       newline character or character sequence in the pattern.  Which  charac-
6934       ters are interpreted as newlines is controlled by the options passed to
6935       a compiling function or by a special sequence at the start of the  pat-
6936       tern, as described in the section entitled "Newline conventions" above.
6937       Note that the end of this type of comment is a literal newline sequence
6938       in  the pattern; escape sequences that happen to represent a newline do
6939       not count. For example, consider this  pattern  when  PCRE_EXTENDED  is
6940       set, and the default newline convention is in force:
6941
6942         abc #comment \n still comment
6943
6944       On  encountering  the  # character, pcre_compile() skips along, looking
6945       for a newline in the pattern. The sequence \n is still literal at  this
6946       stage,  so  it does not terminate the comment. Only an actual character
6947       with the code value 0x0a (the default newline) does so.
6948
6949
6950RECURSIVE PATTERNS
6951
6952       Consider the problem of matching a string in parentheses, allowing  for
6953       unlimited  nested  parentheses.  Without the use of recursion, the best
6954       that can be done is to use a pattern that  matches  up  to  some  fixed
6955       depth  of  nesting.  It  is not possible to handle an arbitrary nesting
6956       depth.
6957
6958       For some time, Perl has provided a facility that allows regular expres-
6959       sions  to recurse (amongst other things). It does this by interpolating
6960       Perl code in the expression at run time, and the code can refer to  the
6961       expression itself. A Perl pattern using code interpolation to solve the
6962       parentheses problem can be created like this:
6963
6964         $re = qr{\( (?: (?>[^()]+) | (?p{$re}) )* \)}x;
6965
6966       The (?p{...}) item interpolates Perl code at run time, and in this case
6967       refers recursively to the pattern in which it appears.
6968
6969       Obviously, PCRE cannot support the interpolation of Perl code. Instead,
6970       it supports special syntax for recursion of  the  entire  pattern,  and
6971       also  for  individual  subpattern  recursion. After its introduction in
6972       PCRE and Python, this kind of  recursion  was  subsequently  introduced
6973       into Perl at release 5.10.
6974
6975       A  special  item  that consists of (? followed by a number greater than
6976       zero and a closing parenthesis is a recursive subroutine  call  of  the
6977       subpattern  of  the  given  number, provided that it occurs inside that
6978       subpattern. (If not, it is a non-recursive subroutine  call,  which  is
6979       described  in  the  next  section.)  The special item (?R) or (?0) is a
6980       recursive call of the entire regular expression.
6981
6982       This PCRE pattern solves the nested  parentheses  problem  (assume  the
6983       PCRE_EXTENDED option is set so that white space is ignored):
6984
6985         \( ( [^()]++ | (?R) )* \)
6986
6987       First  it matches an opening parenthesis. Then it matches any number of
6988       substrings which can either be a  sequence  of  non-parentheses,  or  a
6989       recursive  match  of the pattern itself (that is, a correctly parenthe-
6990       sized substring).  Finally there is a closing parenthesis. Note the use
6991       of a possessive quantifier to avoid backtracking into sequences of non-
6992       parentheses.
6993
6994       If this were part of a larger pattern, you would not  want  to  recurse
6995       the entire pattern, so instead you could use this:
6996
6997         ( \( ( [^()]++ | (?1) )* \) )
6998
6999       We  have  put the pattern into parentheses, and caused the recursion to
7000       refer to them instead of the whole pattern.
7001
7002       In a larger pattern,  keeping  track  of  parenthesis  numbers  can  be
7003       tricky.  This is made easier by the use of relative references. Instead
7004       of (?1) in the pattern above you can write (?-2) to refer to the second
7005       most  recently  opened  parentheses  preceding  the recursion. In other
7006       words, a negative number counts capturing  parentheses  leftwards  from
7007       the point at which it is encountered.
7008
7009       It  is  also  possible  to refer to subsequently opened parentheses, by
7010       writing references such as (?+2). However, these  cannot  be  recursive
7011       because  the  reference  is  not inside the parentheses that are refer-
7012       enced. They are always non-recursive subroutine calls, as described  in
7013       the next section.
7014
7015       An  alternative  approach is to use named parentheses instead. The Perl
7016       syntax for this is (?&name); PCRE's earlier syntax  (?P>name)  is  also
7017       supported. We could rewrite the above example as follows:
7018
7019         (?<pn> \( ( [^()]++ | (?&pn) )* \) )
7020
7021       If  there  is more than one subpattern with the same name, the earliest
7022       one is used.
7023
7024       This particular example pattern that we have been looking  at  contains
7025       nested unlimited repeats, and so the use of a possessive quantifier for
7026       matching strings of non-parentheses is important when applying the pat-
7027       tern  to  strings  that do not match. For example, when this pattern is
7028       applied to
7029
7030         (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()
7031
7032       it yields "no match" quickly. However, if a  possessive  quantifier  is
7033       not  used, the match runs for a very long time indeed because there are
7034       so many different ways the + and * repeats can carve  up  the  subject,
7035       and all have to be tested before failure can be reported.
7036
7037       At  the  end  of a match, the values of capturing parentheses are those
7038       from the outermost level. If you want to obtain intermediate values,  a
7039       callout  function can be used (see below and the pcrecallout documenta-
7040       tion). If the pattern above is matched against
7041
7042         (ab(cd)ef)
7043
7044       the value for the inner capturing parentheses  (numbered  2)  is  "ef",
7045       which  is the last value taken on at the top level. If a capturing sub-
7046       pattern is not matched at the top level, its final  captured  value  is
7047       unset,  even  if  it was (temporarily) set at a deeper level during the
7048       matching process.
7049
7050       If there are more than 15 capturing parentheses in a pattern, PCRE  has
7051       to  obtain extra memory to store data during a recursion, which it does
7052       by using pcre_malloc, freeing it via pcre_free afterwards. If no memory
7053       can be obtained, the match fails with the PCRE_ERROR_NOMEMORY error.
7054
7055       Do  not  confuse  the (?R) item with the condition (R), which tests for
7056       recursion.  Consider this pattern, which matches text in  angle  brack-
7057       ets,  allowing for arbitrary nesting. Only digits are allowed in nested
7058       brackets (that is, when recursing), whereas any characters are  permit-
7059       ted at the outer level.
7060
7061         < (?: (?(R) \d++  | [^<>]*+) | (?R)) * >
7062
7063       In  this  pattern, (?(R) is the start of a conditional subpattern, with
7064       two different alternatives for the recursive and  non-recursive  cases.
7065       The (?R) item is the actual recursive call.
7066
7067   Differences in recursion processing between PCRE and Perl
7068
7069       Recursion  processing  in PCRE differs from Perl in two important ways.
7070       In PCRE (like Python, but unlike Perl), a recursive subpattern call  is
7071       always treated as an atomic group. That is, once it has matched some of
7072       the subject string, it is never re-entered, even if it contains untried
7073       alternatives  and  there  is a subsequent matching failure. This can be
7074       illustrated by the following pattern, which purports to match a  palin-
7075       dromic  string  that contains an odd number of characters (for example,
7076       "a", "aba", "abcba", "abcdcba"):
7077
7078         ^(.|(.)(?1)\2)$
7079
7080       The idea is that it either matches a single character, or two identical
7081       characters  surrounding  a sub-palindrome. In Perl, this pattern works;
7082       in PCRE it does not if the pattern is  longer  than  three  characters.
7083       Consider the subject string "abcba":
7084
7085       At  the  top level, the first character is matched, but as it is not at
7086       the end of the string, the first alternative fails; the second alterna-
7087       tive is taken and the recursion kicks in. The recursive call to subpat-
7088       tern 1 successfully matches the next character ("b").  (Note  that  the
7089       beginning and end of line tests are not part of the recursion).
7090
7091       Back  at  the top level, the next character ("c") is compared with what
7092       subpattern 2 matched, which was "a". This fails. Because the  recursion
7093       is  treated  as  an atomic group, there are now no backtracking points,
7094       and so the entire match fails. (Perl is able, at  this  point,  to  re-
7095       enter  the  recursion  and try the second alternative.) However, if the
7096       pattern is written with the alternatives in the other order, things are
7097       different:
7098
7099         ^((.)(?1)\2|.)$
7100
7101       This  time,  the recursing alternative is tried first, and continues to
7102       recurse until it runs out of characters, at which point  the  recursion
7103       fails.  But  this  time  we  do  have another alternative to try at the
7104       higher level. That is the big difference:  in  the  previous  case  the
7105       remaining alternative is at a deeper recursion level, which PCRE cannot
7106       use.
7107
7108       To change the pattern so that it matches all palindromic  strings,  not
7109       just  those  with an odd number of characters, it is tempting to change
7110       the pattern to this:
7111
7112         ^((.)(?1)\2|.?)$
7113
7114       Again, this works in Perl, but not in PCRE, and for  the  same  reason.
7115       When  a  deeper  recursion has matched a single character, it cannot be
7116       entered again in order to match an empty string.  The  solution  is  to
7117       separate  the two cases, and write out the odd and even cases as alter-
7118       natives at the higher level:
7119
7120         ^(?:((.)(?1)\2|)|((.)(?3)\4|.))
7121
7122       If you want to match typical palindromic phrases, the  pattern  has  to
7123       ignore all non-word characters, which can be done like this:
7124
7125         ^\W*+(?:((.)\W*+(?1)\W*+\2|)|((.)\W*+(?3)\W*+\4|\W*+.\W*+))\W*+$
7126
7127       If run with the PCRE_CASELESS option, this pattern matches phrases such
7128       as "A man, a plan, a canal: Panama!" and it works well in both PCRE and
7129       Perl.  Note the use of the possessive quantifier *+ to avoid backtrack-
7130       ing into sequences of non-word characters. Without this, PCRE  takes  a
7131       great  deal  longer  (ten  times or more) to match typical phrases, and
7132       Perl takes so long that you think it has gone into a loop.
7133
7134       WARNING: The palindrome-matching patterns above work only if  the  sub-
7135       ject  string  does not start with a palindrome that is shorter than the
7136       entire string.  For example, although "abcba" is correctly matched,  if
7137       the  subject  is "ababa", PCRE finds the palindrome "aba" at the start,
7138       then fails at top level because the end of the string does not  follow.
7139       Once  again, it cannot jump back into the recursion to try other alter-
7140       natives, so the entire match fails.
7141
7142       The second way in which PCRE and Perl differ in  their  recursion  pro-
7143       cessing  is in the handling of captured values. In Perl, when a subpat-
7144       tern is called recursively or as a subpattern (see the  next  section),
7145       it  has  no  access to any values that were captured outside the recur-
7146       sion, whereas in PCRE these values can  be  referenced.  Consider  this
7147       pattern:
7148
7149         ^(.)(\1|a(?2))
7150
7151       In  PCRE,  this  pattern matches "bab". The first capturing parentheses
7152       match "b", then in the second group, when the back reference  \1  fails
7153       to  match "b", the second alternative matches "a" and then recurses. In
7154       the recursion, \1 does now match "b" and so the whole  match  succeeds.
7155       In  Perl,  the pattern fails to match because inside the recursive call
7156       \1 cannot access the externally set value.
7157
7158
7159SUBPATTERNS AS SUBROUTINES
7160
7161       If the syntax for a recursive subpattern call (either by number  or  by
7162       name)  is  used outside the parentheses to which it refers, it operates
7163       like a subroutine in a programming language. The called subpattern  may
7164       be  defined  before or after the reference. A numbered reference can be
7165       absolute or relative, as in these examples:
7166
7167         (...(absolute)...)...(?2)...
7168         (...(relative)...)...(?-1)...
7169         (...(?+1)...(relative)...
7170
7171       An earlier example pointed out that the pattern
7172
7173         (sens|respons)e and \1ibility
7174
7175       matches "sense and sensibility" and "response and responsibility",  but
7176       not "sense and responsibility". If instead the pattern
7177
7178         (sens|respons)e and (?1)ibility
7179
7180       is  used, it does match "sense and responsibility" as well as the other
7181       two strings. Another example is  given  in  the  discussion  of  DEFINE
7182       above.
7183
7184       All  subroutine  calls, whether recursive or not, are always treated as
7185       atomic groups. That is, once a subroutine has matched some of the  sub-
7186       ject string, it is never re-entered, even if it contains untried alter-
7187       natives and there is  a  subsequent  matching  failure.  Any  capturing
7188       parentheses  that  are  set  during the subroutine call revert to their
7189       previous values afterwards.
7190
7191       Processing options such as case-independence are fixed when  a  subpat-
7192       tern  is defined, so if it is used as a subroutine, such options cannot
7193       be changed for different calls. For example, consider this pattern:
7194
7195         (abc)(?i:(?-1))
7196
7197       It matches "abcabc". It does not match "abcABC" because the  change  of
7198       processing option does not affect the called subpattern.
7199
7200
7201ONIGURUMA SUBROUTINE SYNTAX
7202
7203       For  compatibility with Oniguruma, the non-Perl syntax \g followed by a
7204       name or a number enclosed either in angle brackets or single quotes, is
7205       an  alternative  syntax  for  referencing a subpattern as a subroutine,
7206       possibly recursively. Here are two of the examples used above,  rewrit-
7207       ten using this syntax:
7208
7209         (?<pn> \( ( (?>[^()]+) | \g<pn> )* \) )
7210         (sens|respons)e and \g'1'ibility
7211
7212       PCRE  supports  an extension to Oniguruma: if a number is preceded by a
7213       plus or a minus sign it is taken as a relative reference. For example:
7214
7215         (abc)(?i:\g<-1>)
7216
7217       Note that \g{...} (Perl syntax) and \g<...> (Oniguruma syntax) are  not
7218       synonymous.  The former is a back reference; the latter is a subroutine
7219       call.
7220
7221
7222CALLOUTS
7223
7224       Perl has a feature whereby using the sequence (?{...}) causes arbitrary
7225       Perl  code to be obeyed in the middle of matching a regular expression.
7226       This makes it possible, amongst other things, to extract different sub-
7227       strings that match the same pair of parentheses when there is a repeti-
7228       tion.
7229
7230       PCRE provides a similar feature, but of course it cannot obey arbitrary
7231       Perl code. The feature is called "callout". The caller of PCRE provides
7232       an external function by putting its entry point in the global  variable
7233       pcre_callout  (8-bit  library) or pcre[16|32]_callout (16-bit or 32-bit
7234       library).  By default, this variable contains NULL, which disables  all
7235       calling out.
7236
7237       Within  a  regular  expression,  (?C) indicates the points at which the
7238       external function is to be called. If you want  to  identify  different
7239       callout  points, you can put a number less than 256 after the letter C.
7240       The default value is zero.  For example, this pattern has  two  callout
7241       points:
7242
7243         (?C1)abc(?C2)def
7244
7245       If  the PCRE_AUTO_CALLOUT flag is passed to a compiling function, call-
7246       outs are automatically installed before each item in the pattern.  They
7247       are  all  numbered  255. If there is a conditional group in the pattern
7248       whose condition is an assertion, an additional callout is inserted just
7249       before the condition. An explicit callout may also be set at this posi-
7250       tion, as in this example:
7251
7252         (?(?C9)(?=a)abc|def)
7253
7254       Note that this applies only to assertion conditions, not to other types
7255       of condition.
7256
7257       During  matching, when PCRE reaches a callout point, the external func-
7258       tion is called. It is provided with the  number  of  the  callout,  the
7259       position  in  the pattern, and, optionally, one item of data originally
7260       supplied by the caller of the matching function. The  callout  function
7261       may cause matching to proceed, to backtrack, or to fail altogether.
7262
7263       By  default,  PCRE implements a number of optimizations at compile time
7264       and matching time, and one side-effect is that sometimes  callouts  are
7265       skipped.  If  you need all possible callouts to happen, you need to set
7266       options that disable the relevant optimizations. More  details,  and  a
7267       complete  description  of  the  interface  to the callout function, are
7268       given in the pcrecallout documentation.
7269
7270
7271BACKTRACKING CONTROL
7272
7273       Perl 5.10 introduced a number of "Special Backtracking Control  Verbs",
7274       which  are  still  described in the Perl documentation as "experimental
7275       and subject to change or removal in a future version of Perl". It  goes
7276       on  to  say:  "Their  usage in production code should be noted to avoid
7277       problems during upgrades." The same remarks apply to the PCRE  features
7278       described in this section.
7279
7280       The  new verbs make use of what was previously invalid syntax: an open-
7281       ing parenthesis followed by an asterisk. They are generally of the form
7282       (*VERB)  or  (*VERB:NAME). Some may take either form, possibly behaving
7283       differently depending on whether or not a name is present.  A  name  is
7284       any sequence of characters that does not include a closing parenthesis.
7285       The maximum length of name is 255 in the 8-bit library and 65535 in the
7286       16-bit  and  32-bit  libraries.  If  the name is empty, that is, if the
7287       closing parenthesis immediately follows the colon, the effect is as  if
7288       the  colon  were  not  there.  Any number of these verbs may occur in a
7289       pattern.
7290
7291       Since these verbs are specifically related  to  backtracking,  most  of
7292       them  can  be  used only when the pattern is to be matched using one of
7293       the traditional matching functions, because these  use  a  backtracking
7294       algorithm.  With the exception of (*FAIL), which behaves like a failing
7295       negative assertion, the backtracking control verbs cause  an  error  if
7296       encountered by a DFA matching function.
7297
7298       The  behaviour  of  these  verbs in repeated groups, assertions, and in
7299       subpatterns called as subroutines (whether or not recursively) is docu-
7300       mented below.
7301
7302   Optimizations that affect backtracking verbs
7303
7304       PCRE  contains some optimizations that are used to speed up matching by
7305       running some checks at the start of each match attempt. For example, it
7306       may  know  the minimum length of matching subject, or that a particular
7307       character must be present. When one of these optimizations bypasses the
7308       running  of  a  match,  any  included  backtracking  verbs will not, of
7309       course, be processed. You can suppress the start-of-match optimizations
7310       by  setting  the  PCRE_NO_START_OPTIMIZE  option when calling pcre_com-
7311       pile() or pcre_exec(), or by starting the pattern with (*NO_START_OPT).
7312       There is more discussion of this option in the section entitled "Option
7313       bits for pcre_exec()" in the pcreapi documentation.
7314
7315       Experiments with Perl suggest that it too  has  similar  optimizations,
7316       sometimes leading to anomalous results.
7317
7318   Verbs that act immediately
7319
7320       The  following  verbs act as soon as they are encountered. They may not
7321       be followed by a name.
7322
7323          (*ACCEPT)
7324
7325       This verb causes the match to end successfully, skipping the  remainder
7326       of  the pattern. However, when it is inside a subpattern that is called
7327       as a subroutine, only that subpattern is ended  successfully.  Matching
7328       then continues at the outer level. If (*ACCEPT) in triggered in a posi-
7329       tive assertion, the assertion succeeds; in a  negative  assertion,  the
7330       assertion fails.
7331
7332       If  (*ACCEPT)  is inside capturing parentheses, the data so far is cap-
7333       tured. For example:
7334
7335         A((?:A|B(*ACCEPT)|C)D)
7336
7337       This matches "AB", "AAD", or "ACD"; when it matches "AB", "B"  is  cap-
7338       tured by the outer parentheses.
7339
7340         (*FAIL) or (*F)
7341
7342       This  verb causes a matching failure, forcing backtracking to occur. It
7343       is equivalent to (?!) but easier to read. The Perl documentation  notes
7344       that  it  is  probably  useful only when combined with (?{}) or (??{}).
7345       Those are, of course, Perl features that are not present in  PCRE.  The
7346       nearest  equivalent is the callout feature, as for example in this pat-
7347       tern:
7348
7349         a+(?C)(*FAIL)
7350
7351       A match with the string "aaaa" always fails, but the callout  is  taken
7352       before each backtrack happens (in this example, 10 times).
7353
7354   Recording which path was taken
7355
7356       There  is  one  verb  whose  main  purpose  is to track how a match was
7357       arrived at, though it also has a  secondary  use  in  conjunction  with
7358       advancing the match starting point (see (*SKIP) below).
7359
7360         (*MARK:NAME) or (*:NAME)
7361
7362       A  name  is  always  required  with  this  verb.  There  may be as many
7363       instances of (*MARK) as you like in a pattern, and their names  do  not
7364       have to be unique.
7365
7366       When  a  match succeeds, the name of the last-encountered (*MARK:NAME),
7367       (*PRUNE:NAME), or (*THEN:NAME) on the matching path is passed  back  to
7368       the  caller  as  described  in  the  section  entitled  "Extra data for
7369       pcre_exec()" in the  pcreapi  documentation.  Here  is  an  example  of
7370       pcretest  output, where the /K modifier requests the retrieval and out-
7371       putting of (*MARK) data:
7372
7373           re> /X(*MARK:A)Y|X(*MARK:B)Z/K
7374         data> XY
7375          0: XY
7376         MK: A
7377         XZ
7378          0: XZ
7379         MK: B
7380
7381       The (*MARK) name is tagged with "MK:" in this output, and in this exam-
7382       ple  it indicates which of the two alternatives matched. This is a more
7383       efficient way of obtaining this information than putting each  alterna-
7384       tive in its own capturing parentheses.
7385
7386       If  a  verb  with a name is encountered in a positive assertion that is
7387       true, the name is recorded and passed back if it  is  the  last-encoun-
7388       tered. This does not happen for negative assertions or failing positive
7389       assertions.
7390
7391       After a partial match or a failed match, the last encountered  name  in
7392       the entire match process is returned. For example:
7393
7394           re> /X(*MARK:A)Y|X(*MARK:B)Z/K
7395         data> XP
7396         No match, mark = B
7397
7398       Note  that  in  this  unanchored  example the mark is retained from the
7399       match attempt that started at the letter "X" in the subject. Subsequent
7400       match attempts starting at "P" and then with an empty string do not get
7401       as far as the (*MARK) item, but nevertheless do not reset it.
7402
7403       If you are interested in  (*MARK)  values  after  failed  matches,  you
7404       should  probably  set  the PCRE_NO_START_OPTIMIZE option (see above) to
7405       ensure that the match is always attempted.
7406
7407   Verbs that act after backtracking
7408
7409       The following verbs do nothing when they are encountered. Matching con-
7410       tinues  with what follows, but if there is no subsequent match, causing
7411       a backtrack to the verb, a failure is  forced.  That  is,  backtracking
7412       cannot  pass  to the left of the verb. However, when one of these verbs
7413       appears inside an atomic group or an assertion that is true, its effect
7414       is  confined  to  that  group, because once the group has been matched,
7415       there is never any backtracking into it. In this situation,  backtrack-
7416       ing  can  "jump  back" to the left of the entire atomic group or asser-
7417       tion. (Remember also, as stated  above,  that  this  localization  also
7418       applies in subroutine calls.)
7419
7420       These  verbs  differ  in exactly what kind of failure occurs when back-
7421       tracking reaches them. The behaviour described below  is  what  happens
7422       when  the  verb is not in a subroutine or an assertion. Subsequent sec-
7423       tions cover these special cases.
7424
7425         (*COMMIT)
7426
7427       This verb, which may not be followed by a name, causes the whole  match
7428       to fail outright if there is a later matching failure that causes back-
7429       tracking to reach it. Even if the pattern  is  unanchored,  no  further
7430       attempts to find a match by advancing the starting point take place. If
7431       (*COMMIT) is the only backtracking verb that is  encountered,  once  it
7432       has been passed pcre_exec() is committed to finding a match at the cur-
7433       rent starting point, or not at all. For example:
7434
7435         a+(*COMMIT)b
7436
7437       This matches "xxaab" but not "aacaab". It can be thought of as  a  kind
7438       of dynamic anchor, or "I've started, so I must finish." The name of the
7439       most recently passed (*MARK) in the path is passed back when  (*COMMIT)
7440       forces a match failure.
7441
7442       If  there  is more than one backtracking verb in a pattern, a different
7443       one that follows (*COMMIT) may be triggered first,  so  merely  passing
7444       (*COMMIT) during a match does not always guarantee that a match must be
7445       at this starting point.
7446
7447       Note that (*COMMIT) at the start of a pattern is not  the  same  as  an
7448       anchor,  unless  PCRE's start-of-match optimizations are turned off, as
7449       shown in this output from pcretest:
7450
7451           re> /(*COMMIT)abc/
7452         data> xyzabc
7453          0: abc
7454         data> xyzabc\Y
7455         No match
7456
7457       For this pattern, PCRE knows that any match must start with "a", so the
7458       optimization skips along the subject to "a" before applying the pattern
7459       to the first set of data. The match attempt then succeeds. In the  sec-
7460       ond  set of data, the escape sequence \Y is interpreted by the pcretest
7461       program. It causes the PCRE_NO_START_OPTIMIZE option  to  be  set  when
7462       pcre_exec() is called.  This disables the optimization that skips along
7463       to the first character. The pattern is now applied starting at "x", and
7464       so  the  (*COMMIT)  causes  the  match to fail without trying any other
7465       starting points.
7466
7467         (*PRUNE) or (*PRUNE:NAME)
7468
7469       This verb causes the match to fail at the current starting position  in
7470       the subject if there is a later matching failure that causes backtrack-
7471       ing to reach it. If the pattern is unanchored, the  normal  "bumpalong"
7472       advance  to  the next starting character then happens. Backtracking can
7473       occur as usual to the left of (*PRUNE), before it is reached,  or  when
7474       matching  to  the  right  of  (*PRUNE), but if there is no match to the
7475       right, backtracking cannot cross (*PRUNE). In simple cases, the use  of
7476       (*PRUNE)  is just an alternative to an atomic group or possessive quan-
7477       tifier, but there are some uses of (*PRUNE) that cannot be expressed in
7478       any  other  way. In an anchored pattern (*PRUNE) has the same effect as
7479       (*COMMIT).
7480
7481       The   behaviour   of   (*PRUNE:NAME)   is   the   not   the   same   as
7482       (*MARK:NAME)(*PRUNE).   It  is  like  (*MARK:NAME)  in that the name is
7483       remembered for  passing  back  to  the  caller.  However,  (*SKIP:NAME)
7484       searches only for names set with (*MARK).
7485
7486         (*SKIP)
7487
7488       This  verb, when given without a name, is like (*PRUNE), except that if
7489       the pattern is unanchored, the "bumpalong" advance is not to  the  next
7490       character, but to the position in the subject where (*SKIP) was encoun-
7491       tered. (*SKIP) signifies that whatever text was matched leading  up  to
7492       it cannot be part of a successful match. Consider:
7493
7494         a+(*SKIP)b
7495
7496       If  the  subject  is  "aaaac...",  after  the first match attempt fails
7497       (starting at the first character in the  string),  the  starting  point
7498       skips on to start the next attempt at "c". Note that a possessive quan-
7499       tifer does not have the same effect as this example; although it  would
7500       suppress  backtracking  during  the  first  match  attempt,  the second
7501       attempt would start at the second character instead of skipping  on  to
7502       "c".
7503
7504         (*SKIP:NAME)
7505
7506       When (*SKIP) has an associated name, its behaviour is modified. When it
7507       is triggered, the previous path through the pattern is searched for the
7508       most  recent  (*MARK)  that  has  the  same  name. If one is found, the
7509       "bumpalong" advance is to the subject position that corresponds to that
7510       (*MARK) instead of to where (*SKIP) was encountered. If no (*MARK) with
7511       a matching name is found, the (*SKIP) is ignored.
7512
7513       Note that (*SKIP:NAME) searches only for names set by (*MARK:NAME).  It
7514       ignores names that are set by (*PRUNE:NAME) or (*THEN:NAME).
7515
7516         (*THEN) or (*THEN:NAME)
7517
7518       This  verb  causes  a skip to the next innermost alternative when back-
7519       tracking reaches it. That  is,  it  cancels  any  further  backtracking
7520       within  the  current  alternative.  Its name comes from the observation
7521       that it can be used for a pattern-based if-then-else block:
7522
7523         ( COND1 (*THEN) FOO | COND2 (*THEN) BAR | COND3 (*THEN) BAZ ) ...
7524
7525       If the COND1 pattern matches, FOO is tried (and possibly further  items
7526       after  the  end  of the group if FOO succeeds); on failure, the matcher
7527       skips to the second alternative and tries COND2,  without  backtracking
7528       into  COND1.  If that succeeds and BAR fails, COND3 is tried. If subse-
7529       quently BAZ fails, there are no more alternatives, so there is a  back-
7530       track  to  whatever  came  before  the  entire group. If (*THEN) is not
7531       inside an alternation, it acts like (*PRUNE).
7532
7533       The   behaviour   of   (*THEN:NAME)   is   the   not   the   same    as
7534       (*MARK:NAME)(*THEN).   It  is  like  (*MARK:NAME)  in  that the name is
7535       remembered for  passing  back  to  the  caller.  However,  (*SKIP:NAME)
7536       searches only for names set with (*MARK).
7537
7538       A  subpattern that does not contain a | character is just a part of the
7539       enclosing alternative; it is not a nested  alternation  with  only  one
7540       alternative.  The effect of (*THEN) extends beyond such a subpattern to
7541       the enclosing alternative. Consider this pattern, where A, B, etc.  are
7542       complex  pattern fragments that do not contain any | characters at this
7543       level:
7544
7545         A (B(*THEN)C) | D
7546
7547       If A and B are matched, but there is a failure in C, matching does  not
7548       backtrack into A; instead it moves to the next alternative, that is, D.
7549       However, if the subpattern containing (*THEN) is given an  alternative,
7550       it behaves differently:
7551
7552         A (B(*THEN)C | (*FAIL)) | D
7553
7554       The  effect of (*THEN) is now confined to the inner subpattern. After a
7555       failure in C, matching moves to (*FAIL), which causes the whole subpat-
7556       tern  to  fail  because  there are no more alternatives to try. In this
7557       case, matching does now backtrack into A.
7558
7559       Note that a conditional subpattern is  not  considered  as  having  two
7560       alternatives,  because  only  one  is  ever used. In other words, the |
7561       character in a conditional subpattern has a different meaning. Ignoring
7562       white space, consider:
7563
7564         ^.*? (?(?=a) a | b(*THEN)c )
7565
7566       If  the  subject  is  "ba", this pattern does not match. Because .*? is
7567       ungreedy, it initially matches zero  characters.  The  condition  (?=a)
7568       then  fails,  the  character  "b"  is  matched, but "c" is not. At this
7569       point, matching does not backtrack to .*? as might perhaps be  expected
7570       from  the  presence  of  the | character. The conditional subpattern is
7571       part of the single alternative that comprises the whole pattern, and so
7572       the  match  fails.  (If  there was a backtrack into .*?, allowing it to
7573       match "b", the match would succeed.)
7574
7575       The verbs just described provide four different "strengths" of  control
7576       when subsequent matching fails. (*THEN) is the weakest, carrying on the
7577       match at the next alternative. (*PRUNE) comes next, failing  the  match
7578       at  the  current starting position, but allowing an advance to the next
7579       character (for an unanchored pattern). (*SKIP) is similar, except  that
7580       the advance may be more than one character. (*COMMIT) is the strongest,
7581       causing the entire match to fail.
7582
7583   More than one backtracking verb
7584
7585       If more than one backtracking verb is present in  a  pattern,  the  one
7586       that  is  backtracked  onto first acts. For example, consider this pat-
7587       tern, where A, B, etc. are complex pattern fragments:
7588
7589         (A(*COMMIT)B(*THEN)C|ABD)
7590
7591       If A matches but B fails, the backtrack to (*COMMIT) causes the  entire
7592       match to fail. However, if A and B match, but C fails, the backtrack to
7593       (*THEN) causes the next alternative (ABD) to be tried.  This  behaviour
7594       is  consistent,  but is not always the same as Perl's. It means that if
7595       two or more backtracking verbs appear in succession, all the  the  last
7596       of them has no effect. Consider this example:
7597
7598         ...(*COMMIT)(*PRUNE)...
7599
7600       If there is a matching failure to the right, backtracking onto (*PRUNE)
7601       causes it to be triggered, and its action is taken. There can never  be
7602       a backtrack onto (*COMMIT).
7603
7604   Backtracking verbs in repeated groups
7605
7606       PCRE  differs  from  Perl  in  its  handling  of  backtracking verbs in
7607       repeated groups. For example, consider:
7608
7609         /(a(*COMMIT)b)+ac/
7610
7611       If the subject is "abac", Perl matches,  but  PCRE  fails  because  the
7612       (*COMMIT) in the second repeat of the group acts.
7613
7614   Backtracking verbs in assertions
7615
7616       (*FAIL)  in  an assertion has its normal effect: it forces an immediate
7617       backtrack.
7618
7619       (*ACCEPT) in a positive assertion causes the assertion to succeed with-
7620       out  any  further processing. In a negative assertion, (*ACCEPT) causes
7621       the assertion to fail without any further processing.
7622
7623       The other backtracking verbs are not treated specially if  they  appear
7624       in  a  positive  assertion.  In  particular,  (*THEN) skips to the next
7625       alternative in the innermost enclosing  group  that  has  alternations,
7626       whether or not this is within the assertion.
7627
7628       Negative  assertions  are,  however, different, in order to ensure that
7629       changing a positive assertion into a  negative  assertion  changes  its
7630       result. Backtracking into (*COMMIT), (*SKIP), or (*PRUNE) causes a neg-
7631       ative assertion to be true, without considering any further alternative
7632       branches in the assertion.  Backtracking into (*THEN) causes it to skip
7633       to the next enclosing alternative within the assertion (the normal  be-
7634       haviour),  but  if  the  assertion  does  not have such an alternative,
7635       (*THEN) behaves like (*PRUNE).
7636
7637   Backtracking verbs in subroutines
7638
7639       These behaviours occur whether or not the subpattern is  called  recur-
7640       sively.  Perl's treatment of subroutines is different in some cases.
7641
7642       (*FAIL)  in  a subpattern called as a subroutine has its normal effect:
7643       it forces an immediate backtrack.
7644
7645       (*ACCEPT) in a subpattern called as a subroutine causes the  subroutine
7646       match  to succeed without any further processing. Matching then contin-
7647       ues after the subroutine call.
7648
7649       (*COMMIT), (*SKIP), and (*PRUNE) in a subpattern called as a subroutine
7650       cause the subroutine match to fail.
7651
7652       (*THEN)  skips to the next alternative in the innermost enclosing group
7653       within the subpattern that has alternatives. If there is no such  group
7654       within the subpattern, (*THEN) causes the subroutine match to fail.
7655
7656
7657SEE ALSO
7658
7659       pcreapi(3),  pcrecallout(3),  pcrematching(3),  pcresyntax(3), pcre(3),
7660       pcre16(3), pcre32(3).
7661
7662
7663AUTHOR
7664
7665       Philip Hazel
7666       University Computing Service
7667       Cambridge CB2 3QH, England.
7668
7669
7670REVISION
7671
7672       Last updated: 14 June 2015
7673       Copyright (c) 1997-2015 University of Cambridge.
7674------------------------------------------------------------------------------
7675
7676
7677PCRESYNTAX(3)              Library Functions Manual              PCRESYNTAX(3)
7678
7679
7680
7681NAME
7682       PCRE - Perl-compatible regular expressions
7683
7684PCRE REGULAR EXPRESSION SYNTAX SUMMARY
7685
7686       The  full syntax and semantics of the regular expressions that are sup-
7687       ported by PCRE are described in  the  pcrepattern  documentation.  This
7688       document contains a quick-reference summary of the syntax.
7689
7690
7691QUOTING
7692
7693         \x         where x is non-alphanumeric is a literal x
7694         \Q...\E    treat enclosed characters as literal
7695
7696
7697CHARACTERS
7698
7699         \a         alarm, that is, the BEL character (hex 07)
7700         \cx        "control-x", where x is any ASCII character
7701         \e         escape (hex 1B)
7702         \f         form feed (hex 0C)
7703         \n         newline (hex 0A)
7704         \r         carriage return (hex 0D)
7705         \t         tab (hex 09)
7706         \0dd       character with octal code 0dd
7707         \ddd       character with octal code ddd, or backreference
7708         \o{ddd..}  character with octal code ddd..
7709         \xhh       character with hex code hh
7710         \x{hhh..}  character with hex code hhh..
7711
7712       Note that \0dd is always an octal code, and that \8 and \9 are the lit-
7713       eral characters "8" and "9".
7714
7715
7716CHARACTER TYPES
7717
7718         .          any character except newline;
7719                      in dotall mode, any character whatsoever
7720         \C         one data unit, even in UTF mode (best avoided)
7721         \d         a decimal digit
7722         \D         a character that is not a decimal digit
7723         \h         a horizontal white space character
7724         \H         a character that is not a horizontal white space character
7725         \N         a character that is not a newline
7726         \p{xx}     a character with the xx property
7727         \P{xx}     a character without the xx property
7728         \R         a newline sequence
7729         \s         a white space character
7730         \S         a character that is not a white space character
7731         \v         a vertical white space character
7732         \V         a character that is not a vertical white space character
7733         \w         a "word" character
7734         \W         a "non-word" character
7735         \X         a Unicode extended grapheme cluster
7736
7737       By default, \d, \s, and \w match only ASCII characters, even  in  UTF-8
7738       mode  or  in  the 16- bit and 32-bit libraries. However, if locale-spe-
7739       cific matching is happening, \s and \w may also match  characters  with
7740       code  points  in  the range 128-255. If the PCRE_UCP option is set, the
7741       behaviour of these escape sequences is changed to use  Unicode  proper-
7742       ties and they match many more characters.
7743
7744
7745GENERAL CATEGORY PROPERTIES FOR \p and \P
7746
7747         C          Other
7748         Cc         Control
7749         Cf         Format
7750         Cn         Unassigned
7751         Co         Private use
7752         Cs         Surrogate
7753
7754         L          Letter
7755         Ll         Lower case letter
7756         Lm         Modifier letter
7757         Lo         Other letter
7758         Lt         Title case letter
7759         Lu         Upper case letter
7760         L&         Ll, Lu, or Lt
7761
7762         M          Mark
7763         Mc         Spacing mark
7764         Me         Enclosing mark
7765         Mn         Non-spacing mark
7766
7767         N          Number
7768         Nd         Decimal number
7769         Nl         Letter number
7770         No         Other number
7771
7772         P          Punctuation
7773         Pc         Connector punctuation
7774         Pd         Dash punctuation
7775         Pe         Close punctuation
7776         Pf         Final punctuation
7777         Pi         Initial punctuation
7778         Po         Other punctuation
7779         Ps         Open punctuation
7780
7781         S          Symbol
7782         Sc         Currency symbol
7783         Sk         Modifier symbol
7784         Sm         Mathematical symbol
7785         So         Other symbol
7786
7787         Z          Separator
7788         Zl         Line separator
7789         Zp         Paragraph separator
7790         Zs         Space separator
7791
7792
7793PCRE SPECIAL CATEGORY PROPERTIES FOR \p and \P
7794
7795         Xan        Alphanumeric: union of properties L and N
7796         Xps        POSIX space: property Z or tab, NL, VT, FF, CR
7797         Xsp        Perl space: property Z or tab, NL, VT, FF, CR
7798         Xuc        Univerally-named character: one that can be
7799                      represented by a Universal Character Name
7800         Xwd        Perl word: property Xan or underscore
7801
7802       Perl and POSIX space are now the same. Perl added VT to its space char-
7803       acter set at release 5.18 and PCRE changed at release 8.34.
7804
7805
7806SCRIPT NAMES FOR \p AND \P
7807
7808       Arabic, Armenian, Avestan, Balinese, Bamum, Bassa_Vah, Batak,  Bengali,
7809       Bopomofo,  Brahmi,  Braille, Buginese, Buhid, Canadian_Aboriginal, Car-
7810       ian, Caucasian_Albanian, Chakma, Cham, Cherokee, Common, Coptic, Cunei-
7811       form, Cypriot, Cyrillic, Deseret, Devanagari, Duployan, Egyptian_Hiero-
7812       glyphs,  Elbasan,  Ethiopic,  Georgian,  Glagolitic,  Gothic,  Grantha,
7813       Greek,  Gujarati,  Gurmukhi,  Han,  Hangul,  Hanunoo, Hebrew, Hiragana,
7814       Imperial_Aramaic,    Inherited,     Inscriptional_Pahlavi,     Inscrip-
7815       tional_Parthian,   Javanese,   Kaithi,   Kannada,  Katakana,  Kayah_Li,
7816       Kharoshthi, Khmer, Khojki, Khudawadi, Lao, Latin, Lepcha,  Limbu,  Lin-
7817       ear_A,  Linear_B,  Lisu,  Lycian, Lydian, Mahajani, Malayalam, Mandaic,
7818       Manichaean,     Meetei_Mayek,     Mende_Kikakui,      Meroitic_Cursive,
7819       Meroitic_Hieroglyphs,  Miao,  Modi, Mongolian, Mro, Myanmar, Nabataean,
7820       New_Tai_Lue,  Nko,  Ogham,  Ol_Chiki,  Old_Italic,   Old_North_Arabian,
7821       Old_Permic, Old_Persian, Old_South_Arabian, Old_Turkic, Oriya, Osmanya,
7822       Pahawh_Hmong,    Palmyrene,    Pau_Cin_Hau,    Phags_Pa,    Phoenician,
7823       Psalter_Pahlavi,  Rejang,  Runic,  Samaritan, Saurashtra, Sharada, Sha-
7824       vian, Siddham, Sinhala, Sora_Sompeng, Sundanese, Syloti_Nagri,  Syriac,
7825       Tagalog,  Tagbanwa,  Tai_Le,  Tai_Tham, Tai_Viet, Takri, Tamil, Telugu,
7826       Thaana, Thai, Tibetan, Tifinagh, Tirhuta, Ugaritic,  Vai,  Warang_Citi,
7827       Yi.
7828
7829
7830CHARACTER CLASSES
7831
7832         [...]       positive character class
7833         [^...]      negative character class
7834         [x-y]       range (can be used for hex characters)
7835         [[:xxx:]]   positive POSIX named set
7836         [[:^xxx:]]  negative POSIX named set
7837
7838         alnum       alphanumeric
7839         alpha       alphabetic
7840         ascii       0-127
7841         blank       space or tab
7842         cntrl       control character
7843         digit       decimal digit
7844         graph       printing, excluding space
7845         lower       lower case letter
7846         print       printing, including space
7847         punct       printing, excluding alphanumeric
7848         space       white space
7849         upper       upper case letter
7850         word        same as \w
7851         xdigit      hexadecimal digit
7852
7853       In  PCRE,  POSIX character set names recognize only ASCII characters by
7854       default, but some of them use Unicode properties if  PCRE_UCP  is  set.
7855       You can use \Q...\E inside a character class.
7856
7857
7858QUANTIFIERS
7859
7860         ?           0 or 1, greedy
7861         ?+          0 or 1, possessive
7862         ??          0 or 1, lazy
7863         *           0 or more, greedy
7864         *+          0 or more, possessive
7865         *?          0 or more, lazy
7866         +           1 or more, greedy
7867         ++          1 or more, possessive
7868         +?          1 or more, lazy
7869         {n}         exactly n
7870         {n,m}       at least n, no more than m, greedy
7871         {n,m}+      at least n, no more than m, possessive
7872         {n,m}?      at least n, no more than m, lazy
7873         {n,}        n or more, greedy
7874         {n,}+       n or more, possessive
7875         {n,}?       n or more, lazy
7876
7877
7878ANCHORS AND SIMPLE ASSERTIONS
7879
7880         \b          word boundary
7881         \B          not a word boundary
7882         ^           start of subject
7883                      also after internal newline in multiline mode
7884         \A          start of subject
7885         $           end of subject
7886                      also before newline at end of subject
7887                      also before internal newline in multiline mode
7888         \Z          end of subject
7889                      also before newline at end of subject
7890         \z          end of subject
7891         \G          first matching position in subject
7892
7893
7894MATCH POINT RESET
7895
7896         \K          reset start of match
7897
7898       \K is honoured in positive assertions, but ignored in negative ones.
7899
7900
7901ALTERNATION
7902
7903         expr|expr|expr...
7904
7905
7906CAPTURING
7907
7908         (...)           capturing group
7909         (?<name>...)    named capturing group (Perl)
7910         (?'name'...)    named capturing group (Perl)
7911         (?P<name>...)   named capturing group (Python)
7912         (?:...)         non-capturing group
7913         (?|...)         non-capturing group; reset group numbers for
7914                          capturing groups in each alternative
7915
7916
7917ATOMIC GROUPS
7918
7919         (?>...)         atomic, non-capturing group
7920
7921
7922COMMENT
7923
7924         (?#....)        comment (not nestable)
7925
7926
7927OPTION SETTING
7928
7929         (?i)            caseless
7930         (?J)            allow duplicate names
7931         (?m)            multiline
7932         (?s)            single line (dotall)
7933         (?U)            default ungreedy (lazy)
7934         (?x)            extended (ignore white space)
7935         (?-...)         unset option(s)
7936
7937       The  following  are  recognized  only at the very start of a pattern or
7938       after one of the newline or \R options with similar syntax.  More  than
7939       one of them may appear.
7940
7941         (*LIMIT_MATCH=d) set the match limit to d (decimal number)
7942         (*LIMIT_RECURSION=d) set the recursion limit to d (decimal number)
7943         (*NO_AUTO_POSSESS) no auto-possessification (PCRE_NO_AUTO_POSSESS)
7944         (*NO_START_OPT) no start-match optimization (PCRE_NO_START_OPTIMIZE)
7945         (*UTF8)         set UTF-8 mode: 8-bit library (PCRE_UTF8)
7946         (*UTF16)        set UTF-16 mode: 16-bit library (PCRE_UTF16)
7947         (*UTF32)        set UTF-32 mode: 32-bit library (PCRE_UTF32)
7948         (*UTF)          set appropriate UTF mode for the library in use
7949         (*UCP)          set PCRE_UCP (use Unicode properties for \d etc)
7950
7951       Note  that LIMIT_MATCH and LIMIT_RECURSION can only reduce the value of
7952       the limits set by the caller of pcre_exec(), not increase them.
7953
7954
7955NEWLINE CONVENTION
7956
7957       These are recognized only at the very start of  the  pattern  or  after
7958       option settings with a similar syntax.
7959
7960         (*CR)           carriage return only
7961         (*LF)           linefeed only
7962         (*CRLF)         carriage return followed by linefeed
7963         (*ANYCRLF)      all three of the above
7964         (*ANY)          any Unicode newline sequence
7965
7966
7967WHAT \R MATCHES
7968
7969       These  are  recognized  only  at the very start of the pattern or after
7970       option setting with a similar syntax.
7971
7972         (*BSR_ANYCRLF)  CR, LF, or CRLF
7973         (*BSR_UNICODE)  any Unicode newline sequence
7974
7975
7976LOOKAHEAD AND LOOKBEHIND ASSERTIONS
7977
7978         (?=...)         positive look ahead
7979         (?!...)         negative look ahead
7980         (?<=...)        positive look behind
7981         (?<!...)        negative look behind
7982
7983       Each top-level branch of a look behind must be of a fixed length.
7984
7985
7986BACKREFERENCES
7987
7988         \n              reference by number (can be ambiguous)
7989         \gn             reference by number
7990         \g{n}           reference by number
7991         \g{-n}          relative reference by number
7992         \k<name>        reference by name (Perl)
7993         \k'name'        reference by name (Perl)
7994         \g{name}        reference by name (Perl)
7995         \k{name}        reference by name (.NET)
7996         (?P=name)       reference by name (Python)
7997
7998
7999SUBROUTINE REFERENCES (POSSIBLY RECURSIVE)
8000
8001         (?R)            recurse whole pattern
8002         (?n)            call subpattern by absolute number
8003         (?+n)           call subpattern by relative number
8004         (?-n)           call subpattern by relative number
8005         (?&name)        call subpattern by name (Perl)
8006         (?P>name)       call subpattern by name (Python)
8007         \g<name>        call subpattern by name (Oniguruma)
8008         \g'name'        call subpattern by name (Oniguruma)
8009         \g<n>           call subpattern by absolute number (Oniguruma)
8010         \g'n'           call subpattern by absolute number (Oniguruma)
8011         \g<+n>          call subpattern by relative number (PCRE extension)
8012         \g'+n'          call subpattern by relative number (PCRE extension)
8013         \g<-n>          call subpattern by relative number (PCRE extension)
8014         \g'-n'          call subpattern by relative number (PCRE extension)
8015
8016
8017CONDITIONAL PATTERNS
8018
8019         (?(condition)yes-pattern)
8020         (?(condition)yes-pattern|no-pattern)
8021
8022         (?(n)...        absolute reference condition
8023         (?(+n)...       relative reference condition
8024         (?(-n)...       relative reference condition
8025         (?(<name>)...   named reference condition (Perl)
8026         (?('name')...   named reference condition (Perl)
8027         (?(name)...     named reference condition (PCRE)
8028         (?(R)...        overall recursion condition
8029         (?(Rn)...       specific group recursion condition
8030         (?(R&name)...   specific recursion condition
8031         (?(DEFINE)...   define subpattern for reference
8032         (?(assert)...   assertion condition
8033
8034
8035BACKTRACKING CONTROL
8036
8037       The following act immediately they are reached:
8038
8039         (*ACCEPT)       force successful match
8040         (*FAIL)         force backtrack; synonym (*F)
8041         (*MARK:NAME)    set name to be passed back; synonym (*:NAME)
8042
8043       The following act only when a subsequent match failure causes  a  back-
8044       track to reach them. They all force a match failure, but they differ in
8045       what happens afterwards. Those that advance the start-of-match point do
8046       so only if the pattern is not anchored.
8047
8048         (*COMMIT)       overall failure, no advance of starting point
8049         (*PRUNE)        advance to next starting character
8050         (*PRUNE:NAME)   equivalent to (*MARK:NAME)(*PRUNE)
8051         (*SKIP)         advance to current matching position
8052         (*SKIP:NAME)    advance to position corresponding to an earlier
8053                         (*MARK:NAME); if not found, the (*SKIP) is ignored
8054         (*THEN)         local failure, backtrack to next alternation
8055         (*THEN:NAME)    equivalent to (*MARK:NAME)(*THEN)
8056
8057
8058CALLOUTS
8059
8060         (?C)      callout
8061         (?Cn)     callout with data n
8062
8063
8064SEE ALSO
8065
8066       pcrepattern(3), pcreapi(3), pcrecallout(3), pcrematching(3), pcre(3).
8067
8068
8069AUTHOR
8070
8071       Philip Hazel
8072       University Computing Service
8073       Cambridge CB2 3QH, England.
8074
8075
8076REVISION
8077
8078       Last updated: 08 January 2014
8079       Copyright (c) 1997-2014 University of Cambridge.
8080------------------------------------------------------------------------------
8081
8082
8083PCREUNICODE(3)             Library Functions Manual             PCREUNICODE(3)
8084
8085
8086
8087NAME
8088       PCRE - Perl-compatible regular expressions
8089
8090UTF-8, UTF-16, UTF-32, AND UNICODE PROPERTY SUPPORT
8091
8092       As well as UTF-8 support, PCRE also supports UTF-16 (from release 8.30)
8093       and UTF-32 (from release 8.32), by means of two  additional  libraries.
8094       They can be built as well as, or instead of, the 8-bit library.
8095
8096
8097UTF-8 SUPPORT
8098
8099       In  order  process  UTF-8  strings, you must build PCRE's 8-bit library
8100       with UTF support, and, in addition, you must call  pcre_compile()  with
8101       the  PCRE_UTF8 option flag, or the pattern must start with the sequence
8102       (*UTF8) or (*UTF). When either of these is the case, both  the  pattern
8103       and  any  subject  strings  that  are matched against it are treated as
8104       UTF-8 strings instead of strings of individual 1-byte characters.
8105
8106
8107UTF-16 AND UTF-32 SUPPORT
8108
8109       In order process UTF-16 or UTF-32 strings, you must build PCRE's 16-bit
8110       or  32-bit  library  with  UTF support, and, in addition, you must call
8111       pcre16_compile() or pcre32_compile() with the PCRE_UTF16 or  PCRE_UTF32
8112       option flag, as appropriate. Alternatively, the pattern must start with
8113       the sequence (*UTF16), (*UTF32), as appropriate, or (*UTF),  which  can
8114       be used with either library. When UTF mode is set, both the pattern and
8115       any subject strings that are matched against it are treated  as  UTF-16
8116       or  UTF-32  strings  instead  of strings of individual 16-bit or 32-bit
8117       characters.
8118
8119
8120UTF SUPPORT OVERHEAD
8121
8122       If you compile PCRE with UTF support, but do not use it  at  run  time,
8123       the  library will be a bit bigger, but the additional run time overhead
8124       is limited to  testing  the  PCRE_UTF[8|16|32]  flag  occasionally,  so
8125       should not be very big.
8126
8127
8128UNICODE PROPERTY SUPPORT
8129
8130       If PCRE is built with Unicode character property support (which implies
8131       UTF support), the escape sequences \p{..}, \P{..}, and \X can be  used.
8132       The  available properties that can be tested are limited to the general
8133       category properties such as Lu for an upper case letter  or  Nd  for  a
8134       decimal number, the Unicode script names such as Arabic or Han, and the
8135       derived properties Any and L&. Full lists is given in  the  pcrepattern
8136       and  pcresyntax  documentation. Only the short names for properties are
8137       supported. For example, \p{L}  matches  a  letter.  Its  Perl  synonym,
8138       \p{Letter},  is  not  supported.  Furthermore, in Perl, many properties
8139       may optionally be prefixed by "Is", for compatibility  with  Perl  5.6.
8140       PCRE does not support this.
8141
8142   Validity of UTF-8 strings
8143
8144       When  you  set  the PCRE_UTF8 flag, the byte strings passed as patterns
8145       and subjects are (by default) checked for validity on entry to the rel-
8146       evant functions. The entire string is checked before any other process-
8147       ing takes place. From release 7.3 of PCRE, the check is  according  the
8148       rules of RFC 3629, which are themselves derived from the Unicode speci-
8149       fication. Earlier releases of PCRE followed  the  rules  of  RFC  2279,
8150       which  allows  the  full  range of 31-bit values (0 to 0x7FFFFFFF). The
8151       current check allows only values in the range U+0 to U+10FFFF,  exclud-
8152       ing  the  surrogate area. (From release 8.33 the so-called "non-charac-
8153       ter" code points are no longer excluded because Unicode corrigendum  #9
8154       makes it clear that they should not be.)
8155
8156       Characters  in  the "Surrogate Area" of Unicode are reserved for use by
8157       UTF-16, where they are used in pairs to encode codepoints  with  values
8158       greater  than  0xFFFF. The code points that are encoded by UTF-16 pairs
8159       are available independently in the  UTF-8  and  UTF-32  encodings.  (In
8160       other  words,  the  whole  surrogate  thing is a fudge for UTF-16 which
8161       unfortunately messes up UTF-8 and UTF-32.)
8162
8163       If an invalid UTF-8 string is passed to PCRE, an error return is given.
8164       At  compile  time, the only additional information is the offset to the
8165       first byte of the failing character. The run-time functions pcre_exec()
8166       and  pcre_dfa_exec() also pass back this information, as well as a more
8167       detailed reason code if the caller has provided memory in which  to  do
8168       this.
8169
8170       In  some  situations, you may already know that your strings are valid,
8171       and therefore want to skip these checks in  order  to  improve  perfor-
8172       mance,  for  example in the case of a long subject string that is being
8173       scanned repeatedly.  If you set the PCRE_NO_UTF8_CHECK flag at  compile
8174       time  or  at  run  time, PCRE assumes that the pattern or subject it is
8175       given (respectively) contains only valid UTF-8 codes. In this case,  it
8176       does not diagnose an invalid UTF-8 string.
8177
8178       Note  that  passing  PCRE_NO_UTF8_CHECK to pcre_compile() just disables
8179       the check for the pattern; it does not also apply to  subject  strings.
8180       If  you  want  to  disable the check for a subject string you must pass
8181       this option to pcre_exec() or pcre_dfa_exec().
8182
8183       If you pass an invalid UTF-8 string when PCRE_NO_UTF8_CHECK is set, the
8184       result is undefined and your program may crash.
8185
8186   Validity of UTF-16 strings
8187
8188       When you set the PCRE_UTF16 flag, the strings of 16-bit data units that
8189       are passed as patterns and subjects are (by default) checked for valid-
8190       ity  on entry to the relevant functions. Values other than those in the
8191       surrogate range U+D800 to U+DFFF are independent code points. Values in
8192       the surrogate range must be used in pairs in the correct manner.
8193
8194       If  an  invalid  UTF-16  string  is  passed to PCRE, an error return is
8195       given. At compile time, the only additional information is  the  offset
8196       to the first data unit of the failing character. The run-time functions
8197       pcre16_exec() and pcre16_dfa_exec() also pass back this information, as
8198       well  as  a more detailed reason code if the caller has provided memory
8199       in which to do this.
8200
8201       In some situations, you may already know that your strings  are  valid,
8202       and  therefore  want  to  skip these checks in order to improve perfor-
8203       mance. If you set the PCRE_NO_UTF16_CHECK flag at compile  time  or  at
8204       run time, PCRE assumes that the pattern or subject it is given (respec-
8205       tively) contains only valid UTF-16 sequences. In this case, it does not
8206       diagnose  an  invalid  UTF-16 string.  However, if an invalid string is
8207       passed, the result is undefined.
8208
8209   Validity of UTF-32 strings
8210
8211       When you set the PCRE_UTF32 flag, the strings of 32-bit data units that
8212       are passed as patterns and subjects are (by default) checked for valid-
8213       ity on entry to the relevant functions.  This check allows only  values
8214       in  the  range  U+0 to U+10FFFF, excluding the surrogate area U+D800 to
8215       U+DFFF.
8216
8217       If an invalid UTF-32 string is passed  to  PCRE,  an  error  return  is
8218       given.  At  compile time, the only additional information is the offset
8219       to the first data unit of the failing character. The run-time functions
8220       pcre32_exec() and pcre32_dfa_exec() also pass back this information, as
8221       well as a more detailed reason code if the caller has  provided  memory
8222       in which to do this.
8223
8224       In  some  situations, you may already know that your strings are valid,
8225       and therefore want to skip these checks in  order  to  improve  perfor-
8226       mance.  If  you  set the PCRE_NO_UTF32_CHECK flag at compile time or at
8227       run time, PCRE assumes that the pattern or subject it is given (respec-
8228       tively) contains only valid UTF-32 sequences. In this case, it does not
8229       diagnose an invalid UTF-32 string.  However, if an  invalid  string  is
8230       passed, the result is undefined.
8231
8232   General comments about UTF modes
8233
8234       1.  Codepoints  less  than  256  can be specified in patterns by either
8235       braced or unbraced hexadecimal escape sequences (for example, \x{b3} or
8236       \xb3). Larger values have to use braced sequences.
8237
8238       2.  Octal  numbers  up  to  \777 are recognized, and in UTF-8 mode they
8239       match two-byte characters for values greater than \177.
8240
8241       3. Repeat quantifiers apply to complete UTF characters, not to individ-
8242       ual data units, for example: \x{100}{3}.
8243
8244       4.  The dot metacharacter matches one UTF character instead of a single
8245       data unit.
8246
8247       5. The escape sequence \C can be used to match a single byte  in  UTF-8
8248       mode,  or  a single 16-bit data unit in UTF-16 mode, or a single 32-bit
8249       data unit in UTF-32 mode, but its use can lead to some strange  effects
8250       because  it  breaks up multi-unit characters (see the description of \C
8251       in the pcrepattern documentation). The use of \C is  not  supported  in
8252       the  alternative  matching  function  pcre[16|32]_dfa_exec(), nor is it
8253       supported in UTF mode by the JIT optimization of pcre[16|32]_exec(). If
8254       JIT  optimization  is  requested for a UTF pattern that contains \C, it
8255       will not succeed, and so the matching will be carried out by the normal
8256       interpretive function.
8257
8258       6.  The  character escapes \b, \B, \d, \D, \s, \S, \w, and \W correctly
8259       test characters of any code value, but, by default, the characters that
8260       PCRE  recognizes  as digits, spaces, or word characters remain the same
8261       set as in non-UTF mode, all with values less  than  256.  This  remains
8262       true  even  when  PCRE  is  built  to include Unicode property support,
8263       because to do otherwise would slow down PCRE in many common cases. Note
8264       in  particular that this applies to \b and \B, because they are defined
8265       in terms of \w and \W. If you really want to test for a wider sense of,
8266       say,  "digit",  you  can  use  explicit  Unicode property tests such as
8267       \p{Nd}. Alternatively, if you set the PCRE_UCP option, the way that the
8268       character  escapes  work is changed so that Unicode properties are used
8269       to determine which characters match. There are more details in the sec-
8270       tion on generic character types in the pcrepattern documentation.
8271
8272       7.  Similarly,  characters that match the POSIX named character classes
8273       are all low-valued characters, unless the PCRE_UCP option is set.
8274
8275       8. However, the horizontal and vertical white  space  matching  escapes
8276       (\h,  \H,  \v, and \V) do match all the appropriate Unicode characters,
8277       whether or not PCRE_UCP is set.
8278
8279       9. Case-insensitive matching applies only to  characters  whose  values
8280       are  less than 128, unless PCRE is built with Unicode property support.
8281       A few Unicode characters such as Greek sigma have more than  two  code-
8282       points that are case-equivalent. Up to and including PCRE release 8.31,
8283       only one-to-one case mappings were supported, but later releases  (with
8284       Unicode  property  support) do treat as case-equivalent all versions of
8285       characters such as Greek sigma.
8286
8287
8288AUTHOR
8289
8290       Philip Hazel
8291       University Computing Service
8292       Cambridge CB2 3QH, England.
8293
8294
8295REVISION
8296
8297       Last updated: 27 February 2013
8298       Copyright (c) 1997-2013 University of Cambridge.
8299------------------------------------------------------------------------------
8300
8301
8302PCREJIT(3)                 Library Functions Manual                 PCREJIT(3)
8303
8304
8305
8306NAME
8307       PCRE - Perl-compatible regular expressions
8308
8309PCRE JUST-IN-TIME COMPILER SUPPORT
8310
8311       Just-in-time  compiling  is a heavyweight optimization that can greatly
8312       speed up pattern matching. However, it comes at the cost of extra  pro-
8313       cessing before the match is performed. Therefore, it is of most benefit
8314       when the same pattern is going to be matched many times. This does  not
8315       necessarily  mean  many calls of a matching function; if the pattern is
8316       not anchored, matching attempts may take place many  times  at  various
8317       positions  in  the  subject, even for a single call.  Therefore, if the
8318       subject string is very long, it may still pay to use  JIT  for  one-off
8319       matches.
8320
8321       JIT  support  applies  only to the traditional Perl-compatible matching
8322       function.  It does not apply when the DFA matching  function  is  being
8323       used. The code for this support was written by Zoltan Herczeg.
8324
8325
83268-BIT, 16-BIT AND 32-BIT SUPPORT
8327
8328       JIT  support  is available for all of the 8-bit, 16-bit and 32-bit PCRE
8329       libraries. To keep this documentation simple, only the 8-bit  interface
8330       is described in what follows. If you are using the 16-bit library, sub-
8331       stitute the  16-bit  functions  and  16-bit  structures  (for  example,
8332       pcre16_jit_stack  instead  of  pcre_jit_stack).  If  you  are using the
8333       32-bit library, substitute the 32-bit functions and  32-bit  structures
8334       (for example, pcre32_jit_stack instead of pcre_jit_stack).
8335
8336
8337AVAILABILITY OF JIT SUPPORT
8338
8339       JIT  support  is  an  optional  feature of PCRE. The "configure" option
8340       --enable-jit (or equivalent CMake option) must  be  set  when  PCRE  is
8341       built  if  you want to use JIT. The support is limited to the following
8342       hardware platforms:
8343
8344         ARM v5, v7, and Thumb2
8345         Intel x86 32-bit and 64-bit
8346         MIPS 32-bit
8347         Power PC 32-bit and 64-bit
8348         SPARC 32-bit (experimental)
8349
8350       If --enable-jit is set on an unsupported platform, compilation fails.
8351
8352       A program that is linked with PCRE 8.20 or later can tell if  JIT  sup-
8353       port  is  available  by  calling pcre_config() with the PCRE_CONFIG_JIT
8354       option. The result is 1 when JIT is available, and  0  otherwise.  How-
8355       ever, a simple program does not need to check this in order to use JIT.
8356       The normal API is implemented in a way that falls back to the interpre-
8357       tive code if JIT is not available. For programs that need the best pos-
8358       sible performance, there is also a "fast path"  API  that  is  JIT-spe-
8359       cific.
8360
8361       If  your program may sometimes be linked with versions of PCRE that are
8362       older than 8.20, but you want to use JIT when it is available, you  can
8363       test the values of PCRE_MAJOR and PCRE_MINOR, or the existence of a JIT
8364       macro such as PCRE_CONFIG_JIT, for compile-time control of your code.
8365
8366
8367SIMPLE USE OF JIT
8368
8369       You have to do two things to make use of the JIT support  in  the  sim-
8370       plest way:
8371
8372         (1) Call pcre_study() with the PCRE_STUDY_JIT_COMPILE option for
8373             each compiled pattern, and pass the resulting pcre_extra block to
8374             pcre_exec().
8375
8376         (2) Use pcre_free_study() to free the pcre_extra block when it is
8377             no  longer  needed,  instead  of  just  freeing it yourself. This
8378       ensures that
8379             any JIT data is also freed.
8380
8381       For a program that may be linked with pre-8.20 versions  of  PCRE,  you
8382       can insert
8383
8384         #ifndef PCRE_STUDY_JIT_COMPILE
8385         #define PCRE_STUDY_JIT_COMPILE 0
8386         #endif
8387
8388       so  that  no  option  is passed to pcre_study(), and then use something
8389       like this to free the study data:
8390
8391         #ifdef PCRE_CONFIG_JIT
8392             pcre_free_study(study_ptr);
8393         #else
8394             pcre_free(study_ptr);
8395         #endif
8396
8397       PCRE_STUDY_JIT_COMPILE requests the JIT compiler to generate  code  for
8398       complete  matches.  If  you  want  to  run  partial  matches  using the
8399       PCRE_PARTIAL_HARD or  PCRE_PARTIAL_SOFT  options  of  pcre_exec(),  you
8400       should  set  one  or  both  of the following options in addition to, or
8401       instead of, PCRE_STUDY_JIT_COMPILE when you call pcre_study():
8402
8403         PCRE_STUDY_JIT_PARTIAL_HARD_COMPILE
8404         PCRE_STUDY_JIT_PARTIAL_SOFT_COMPILE
8405
8406       The JIT compiler generates different optimized code  for  each  of  the
8407       three  modes  (normal, soft partial, hard partial). When pcre_exec() is
8408       called, the appropriate code is run if it is available. Otherwise,  the
8409       pattern is matched using interpretive code.
8410
8411       In  some circumstances you may need to call additional functions. These
8412       are described in the  section  entitled  "Controlling  the  JIT  stack"
8413       below.
8414
8415       If  JIT  support  is  not  available,  PCRE_STUDY_JIT_COMPILE  etc. are
8416       ignored, and no JIT data is created. Otherwise, the compiled pattern is
8417       passed  to the JIT compiler, which turns it into machine code that exe-
8418       cutes much faster than the normal interpretive code.  When  pcre_exec()
8419       is  passed  a  pcre_extra block containing a pointer to JIT code of the
8420       appropriate mode (normal or hard/soft  partial),  it  obeys  that  code
8421       instead  of  running  the interpreter. The result is identical, but the
8422       compiled JIT code runs much faster.
8423
8424       There are some pcre_exec() options that are not supported for JIT  exe-
8425       cution.  There  are  also  some  pattern  items that JIT cannot handle.
8426       Details are given below. In both cases, execution  automatically  falls
8427       back  to  the  interpretive  code.  If you want to know whether JIT was
8428       actually used for a particular match, you  should  arrange  for  a  JIT
8429       callback  function  to  be  set up as described in the section entitled
8430       "Controlling the JIT stack" below, even if you do not need to supply  a
8431       non-default  JIT stack. Such a callback function is called whenever JIT
8432       code is about to be obeyed. If the execution options are not right  for
8433       JIT execution, the callback function is not obeyed.
8434
8435       If  the  JIT  compiler finds an unsupported item, no JIT data is gener-
8436       ated. You can find out if JIT execution is available after  studying  a
8437       pattern  by  calling  pcre_fullinfo()  with the PCRE_INFO_JIT option. A
8438       result of 1 means that JIT compilation was successful. A  result  of  0
8439       means that JIT support is not available, or the pattern was not studied
8440       with PCRE_STUDY_JIT_COMPILE etc., or the JIT compiler was not  able  to
8441       handle the pattern.
8442
8443       Once a pattern has been studied, with or without JIT, it can be used as
8444       many times as you like for matching different subject strings.
8445
8446
8447UNSUPPORTED OPTIONS AND PATTERN ITEMS
8448
8449       The only pcre_exec() options that are supported for JIT  execution  are
8450       PCRE_NO_UTF8_CHECK, PCRE_NO_UTF16_CHECK, PCRE_NO_UTF32_CHECK, PCRE_NOT-
8451       BOL,  PCRE_NOTEOL,  PCRE_NOTEMPTY,   PCRE_NOTEMPTY_ATSTART,   PCRE_PAR-
8452       TIAL_HARD, and PCRE_PARTIAL_SOFT.
8453
8454       The  only  unsupported  pattern items are \C (match a single data unit)
8455       when running in a UTF mode, and a callout immediately before an  asser-
8456       tion condition in a conditional group.
8457
8458
8459RETURN VALUES FROM JIT EXECUTION
8460
8461       When  a  pattern  is matched using JIT execution, the return values are
8462       the same as those given by the interpretive pcre_exec() code, with  the
8463       addition  of  one new error code: PCRE_ERROR_JIT_STACKLIMIT. This means
8464       that the memory used for the JIT stack was insufficient. See  "Control-
8465       ling the JIT stack" below for a discussion of JIT stack usage. For com-
8466       patibility with the interpretive pcre_exec() code, no  more  than  two-
8467       thirds  of  the ovector argument is used for passing back captured sub-
8468       strings.
8469
8470       The error code PCRE_ERROR_MATCHLIMIT is returned by  the  JIT  code  if
8471       searching  a  very large pattern tree goes on for too long, as it is in
8472       the same circumstance when JIT is not used, but the details of  exactly
8473       what  is  counted are not the same. The PCRE_ERROR_RECURSIONLIMIT error
8474       code is never returned by JIT execution.
8475
8476
8477SAVING AND RESTORING COMPILED PATTERNS
8478
8479       The code that is generated by the  JIT  compiler  is  architecture-spe-
8480       cific,  and  is also position dependent. For those reasons it cannot be
8481       saved (in a file or database) and restored later like the bytecode  and
8482       other  data  of  a compiled pattern. Saving and restoring compiled pat-
8483       terns is not something many people do. More detail about this  facility
8484       is  given in the pcreprecompile documentation. It should be possible to
8485       run pcre_study() on a saved and restored pattern, and thereby  recreate
8486       the  JIT  data, but because JIT compilation uses significant resources,
8487       it is probably not worth doing this; you might as  well  recompile  the
8488       original pattern.
8489
8490
8491CONTROLLING THE JIT STACK
8492
8493       When the compiled JIT code runs, it needs a block of memory to use as a
8494       stack.  By default, it uses 32K on the  machine  stack.  However,  some
8495       large   or   complicated  patterns  need  more  than  this.  The  error
8496       PCRE_ERROR_JIT_STACKLIMIT is given when  there  is  not  enough  stack.
8497       Three  functions  are provided for managing blocks of memory for use as
8498       JIT stacks. There is further discussion about the use of JIT stacks  in
8499       the section entitled "JIT stack FAQ" below.
8500
8501       The  pcre_jit_stack_alloc() function creates a JIT stack. Its arguments
8502       are a starting size and a maximum size, and it returns a pointer to  an
8503       opaque  structure of type pcre_jit_stack, or NULL if there is an error.
8504       The pcre_jit_stack_free() function can be used to free a stack that  is
8505       no  longer  needed.  (For  the technically minded: the address space is
8506       allocated by mmap or VirtualAlloc.)
8507
8508       JIT uses far less memory for recursion than the interpretive code,  and
8509       a  maximum  stack size of 512K to 1M should be more than enough for any
8510       pattern.
8511
8512       The pcre_assign_jit_stack() function specifies  which  stack  JIT  code
8513       should use. Its arguments are as follows:
8514
8515         pcre_extra         *extra
8516         pcre_jit_callback  callback
8517         void               *data
8518
8519       The  extra  argument  must  be  the  result  of studying a pattern with
8520       PCRE_STUDY_JIT_COMPILE etc. There are three cases for the values of the
8521       other two options:
8522
8523         (1) If callback is NULL and data is NULL, an internal 32K block
8524             on the machine stack is used.
8525
8526         (2) If callback is NULL and data is not NULL, data must be
8527             a valid JIT stack, the result of calling pcre_jit_stack_alloc().
8528
8529         (3) If callback is not NULL, it must point to a function that is
8530             called with data as an argument at the start of matching, in
8531             order to set up a JIT stack. If the return from the callback
8532             function is NULL, the internal 32K stack is used; otherwise the
8533             return value must be a valid JIT stack, the result of calling
8534             pcre_jit_stack_alloc().
8535
8536       A  callback function is obeyed whenever JIT code is about to be run; it
8537       is not obeyed when pcre_exec() is called with options that  are  incom-
8538       patible for JIT execution. A callback function can therefore be used to
8539       determine whether a match operation was  executed  by  JIT  or  by  the
8540       interpreter.
8541
8542       You may safely use the same JIT stack for more than one pattern (either
8543       by assigning directly or by callback), as long as the patterns are  all
8544       matched  sequentially in the same thread. In a multithread application,
8545       if you do not specify a JIT stack, or if you assign or pass  back  NULL
8546       from  a  callback, that is thread-safe, because each thread has its own
8547       machine stack. However, if you assign  or  pass  back  a  non-NULL  JIT
8548       stack,  this  must  be  a  different  stack for each thread so that the
8549       application is thread-safe.
8550
8551       Strictly speaking, even more is allowed. You can assign the  same  non-
8552       NULL  stack  to any number of patterns as long as they are not used for
8553       matching by multiple threads at the same time.  For  example,  you  can
8554       assign  the same stack to all compiled patterns, and use a global mutex
8555       in the callback to wait until the stack is available for use.  However,
8556       this is an inefficient solution, and not recommended.
8557
8558       This  is a suggestion for how a multithreaded program that needs to set
8559       up non-default JIT stacks might operate:
8560
8561         During thread initalization
8562           thread_local_var = pcre_jit_stack_alloc(...)
8563
8564         During thread exit
8565           pcre_jit_stack_free(thread_local_var)
8566
8567         Use a one-line callback function
8568           return thread_local_var
8569
8570       All the functions described in this section do nothing if  JIT  is  not
8571       available,  and  pcre_assign_jit_stack()  does nothing unless the extra
8572       argument is non-NULL and points to  a  pcre_extra  block  that  is  the
8573       result of a successful study with PCRE_STUDY_JIT_COMPILE etc.
8574
8575
8576JIT STACK FAQ
8577
8578       (1) Why do we need JIT stacks?
8579
8580       PCRE  (and JIT) is a recursive, depth-first engine, so it needs a stack
8581       where the local data of the current node is pushed before checking  its
8582       child nodes.  Allocating real machine stack on some platforms is diffi-
8583       cult. For example, the stack chain needs to be updated every time if we
8584       extend  the  stack  on  PowerPC.  Although it is possible, its updating
8585       time overhead decreases performance. So we do the recursion in memory.
8586
8587       (2) Why don't we simply allocate blocks of memory with malloc()?
8588
8589       Modern operating systems have a  nice  feature:  they  can  reserve  an
8590       address space instead of allocating memory. We can safely allocate mem-
8591       ory pages inside this address space, so the stack  could  grow  without
8592       moving memory data (this is important because of pointers). Thus we can
8593       allocate 1M address space, and use only a single memory  page  (usually
8594       4K)  if  that is enough. However, we can still grow up to 1M anytime if
8595       needed.
8596
8597       (3) Who "owns" a JIT stack?
8598
8599       The owner of the stack is the user program, not the JIT studied pattern
8600       or  anything else. The user program must ensure that if a stack is used
8601       by pcre_exec(), (that is, it is assigned to the pattern currently  run-
8602       ning), that stack must not be used by any other threads (to avoid over-
8603       writing the same memory area). The best practice for multithreaded pro-
8604       grams  is  to  allocate  a stack for each thread, and return this stack
8605       through the JIT callback function.
8606
8607       (4) When should a JIT stack be freed?
8608
8609       You can free a JIT stack at any time, as long as it will not be used by
8610       pcre_exec()  again.  When  you  assign  the  stack to a pattern, only a
8611       pointer is set. There is no reference counting or any other magic.  You
8612       can  free  the  patterns  and stacks in any order, anytime. Just do not
8613       call pcre_exec() with a pattern pointing to an already freed stack,  as
8614       that  will cause SEGFAULT. (Also, do not free a stack currently used by
8615       pcre_exec() in another thread). You can also replace the  stack  for  a
8616       pattern  at  any  time.  You  can  even  free the previous stack before
8617       assigning a replacement.
8618
8619       (5) Should I allocate/free a  stack  every  time  before/after  calling
8620       pcre_exec()?
8621
8622       No,  because  this  is  too  costly in terms of resources. However, you
8623       could implement some clever idea which release the stack if it  is  not
8624       used  in  let's  say  two minutes. The JIT callback can help to achieve
8625       this without keeping a list of the currently JIT studied patterns.
8626
8627       (6) OK, the stack is for long term memory allocation. But what  happens
8628       if  a pattern causes stack overflow with a stack of 1M? Is that 1M kept
8629       until the stack is freed?
8630
8631       Especially on embedded sytems, it might be a good idea to release  mem-
8632       ory  sometimes  without  freeing the stack. There is no API for this at
8633       the moment.  Probably a function call which returns with the  currently
8634       allocated  memory for any stack and another which allows releasing mem-
8635       ory (shrinking the stack) would be a good idea if someone needs this.
8636
8637       (7) This is too much of a headache. Isn't there any better solution for
8638       JIT stack handling?
8639
8640       No,  thanks to Windows. If POSIX threads were used everywhere, we could
8641       throw out this complicated API.
8642
8643
8644EXAMPLE CODE
8645
8646       This is a single-threaded example that specifies a  JIT  stack  without
8647       using a callback.
8648
8649         int rc;
8650         int ovector[30];
8651         pcre *re;
8652         pcre_extra *extra;
8653         pcre_jit_stack *jit_stack;
8654
8655         re = pcre_compile(pattern, 0, &error, &erroffset, NULL);
8656         /* Check for errors */
8657         extra = pcre_study(re, PCRE_STUDY_JIT_COMPILE, &error);
8658         jit_stack = pcre_jit_stack_alloc(32*1024, 512*1024);
8659         /* Check for error (NULL) */
8660         pcre_assign_jit_stack(extra, NULL, jit_stack);
8661         rc = pcre_exec(re, extra, subject, length, 0, 0, ovector, 30);
8662         /* Check results */
8663         pcre_free(re);
8664         pcre_free_study(extra);
8665         pcre_jit_stack_free(jit_stack);
8666
8667
8668JIT FAST PATH API
8669
8670       Because  the  API  described  above falls back to interpreted execution
8671       when JIT is not available, it is convenient for programs that are writ-
8672       ten  for  general  use  in  many environments. However, calling JIT via
8673       pcre_exec() does have a performance impact. Programs that  are  written
8674       for  use  where  JIT  is known to be available, and which need the best
8675       possible performance, can instead use a "fast path"  API  to  call  JIT
8676       execution  directly  instead of calling pcre_exec() (obviously only for
8677       patterns that have been successfully studied by JIT).
8678
8679       The fast path function is called pcre_jit_exec(), and it takes  exactly
8680       the  same  arguments  as pcre_exec(), plus one additional argument that
8681       must point to a JIT stack. The JIT stack arrangements  described  above
8682       do not apply. The return values are the same as for pcre_exec().
8683
8684       When  you  call  pcre_exec(), as well as testing for invalid options, a
8685       number of other sanity checks are performed on the arguments. For exam-
8686       ple,  if  the  subject  pointer  is NULL, or its length is negative, an
8687       immediate error is given. Also, unless PCRE_NO_UTF[8|16|32] is  set,  a
8688       UTF  subject  string is tested for validity. In the interests of speed,
8689       these checks do not happen on the JIT fast path, and if invalid data is
8690       passed, the result is undefined.
8691
8692       Bypassing  the  sanity  checks  and  the  pcre_exec() wrapping can give
8693       speedups of more than 10%.
8694
8695
8696SEE ALSO
8697
8698       pcreapi(3)
8699
8700
8701AUTHOR
8702
8703       Philip Hazel (FAQ by Zoltan Herczeg)
8704       University Computing Service
8705       Cambridge CB2 3QH, England.
8706
8707
8708REVISION
8709
8710       Last updated: 17 March 2013
8711       Copyright (c) 1997-2013 University of Cambridge.
8712------------------------------------------------------------------------------
8713
8714
8715PCREPARTIAL(3)             Library Functions Manual             PCREPARTIAL(3)
8716
8717
8718
8719NAME
8720       PCRE - Perl-compatible regular expressions
8721
8722PARTIAL MATCHING IN PCRE
8723
8724       In normal use of PCRE, if the subject string that is passed to a match-
8725       ing function matches as far as it goes, but is too short to  match  the
8726       entire pattern, PCRE_ERROR_NOMATCH is returned. There are circumstances
8727       where it might be helpful to distinguish this case from other cases  in
8728       which there is no match.
8729
8730       Consider, for example, an application where a human is required to type
8731       in data for a field with specific formatting requirements.  An  example
8732       might be a date in the form ddmmmyy, defined by this pattern:
8733
8734         ^\d?\d(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)\d\d$
8735
8736       If the application sees the user's keystrokes one by one, and can check
8737       that what has been typed so far is potentially valid,  it  is  able  to
8738       raise  an  error  as  soon  as  a  mistake  is made, by beeping and not
8739       reflecting the character that has been typed, for example. This immedi-
8740       ate  feedback is likely to be a better user interface than a check that
8741       is delayed until the entire string has been entered.  Partial  matching
8742       can  also be useful when the subject string is very long and is not all
8743       available at once.
8744
8745       PCRE supports partial matching by means of  the  PCRE_PARTIAL_SOFT  and
8746       PCRE_PARTIAL_HARD  options,  which  can  be set when calling any of the
8747       matching functions. For backwards compatibility, PCRE_PARTIAL is a syn-
8748       onym  for  PCRE_PARTIAL_SOFT.  The essential difference between the two
8749       options is whether or not a partial match is preferred to  an  alterna-
8750       tive complete match, though the details differ between the two types of
8751       matching function. If both options  are  set,  PCRE_PARTIAL_HARD  takes
8752       precedence.
8753
8754       If  you  want to use partial matching with just-in-time optimized code,
8755       you must call pcre_study(), pcre16_study() or  pcre32_study() with  one
8756       or both of these options:
8757
8758         PCRE_STUDY_JIT_PARTIAL_SOFT_COMPILE
8759         PCRE_STUDY_JIT_PARTIAL_HARD_COMPILE
8760
8761       PCRE_STUDY_JIT_COMPILE  should also be set if you are going to run non-
8762       partial matches on the same pattern. If the appropriate JIT study  mode
8763       has not been set for a match, the interpretive matching code is used.
8764
8765       Setting a partial matching option disables two of PCRE's standard opti-
8766       mizations. PCRE remembers the last literal data unit in a pattern,  and
8767       abandons  matching  immediately  if  it  is  not present in the subject
8768       string. This optimization cannot be used  for  a  subject  string  that
8769       might  match only partially. If the pattern was studied, PCRE knows the
8770       minimum length of a matching string, and does not  bother  to  run  the
8771       matching  function  on  shorter strings. This optimization is also dis-
8772       abled for partial matching.
8773
8774
8775PARTIAL MATCHING USING pcre_exec() OR pcre[16|32]_exec()
8776
8777       A  partial   match   occurs   during   a   call   to   pcre_exec()   or
8778       pcre[16|32]_exec()  when  the end of the subject string is reached suc-
8779       cessfully, but matching cannot continue  because  more  characters  are
8780       needed.   However, at least one character in the subject must have been
8781       inspected. This character need not  form  part  of  the  final  matched
8782       string;  lookbehind  assertions and the \K escape sequence provide ways
8783       of inspecting characters before the start of a matched  substring.  The
8784       requirement  for  inspecting  at  least one character exists because an
8785       empty string can always be matched; without such  a  restriction  there
8786       would  always  be  a partial match of an empty string at the end of the
8787       subject.
8788
8789       If there are at least two slots in the offsets vector  when  a  partial
8790       match  is returned, the first slot is set to the offset of the earliest
8791       character that was inspected. For convenience, the second offset points
8792       to the end of the subject so that a substring can easily be identified.
8793       If there are at least three slots in the offsets vector, the third slot
8794       is set to the offset of the character where matching started.
8795
8796       For the majority of patterns, the contents of the first and third slots
8797       will be the same. However, for patterns that contain lookbehind  asser-
8798       tions, or begin with \b or \B, characters before the one where matching
8799       started may have been inspected while carrying out the match. For exam-
8800       ple, consider this pattern:
8801
8802         /(?<=abc)123/
8803
8804       This pattern matches "123", but only if it is preceded by "abc". If the
8805       subject string is "xyzabc12", the first two  offsets  after  a  partial
8806       match  are for the substring "abc12", because all these characters were
8807       inspected. However, the third offset is set to 6, because that  is  the
8808       offset where matching began.
8809
8810       What happens when a partial match is identified depends on which of the
8811       two partial matching options are set.
8812
8813   PCRE_PARTIAL_SOFT WITH pcre_exec() OR pcre[16|32]_exec()
8814
8815       If PCRE_PARTIAL_SOFT is  set  when  pcre_exec()  or  pcre[16|32]_exec()
8816       identifies a partial match, the partial match is remembered, but match-
8817       ing continues as normal, and other  alternatives  in  the  pattern  are
8818       tried.  If  no  complete  match  can  be  found,  PCRE_ERROR_PARTIAL is
8819       returned instead of PCRE_ERROR_NOMATCH.
8820
8821       This option is "soft" because it prefers a complete match over  a  par-
8822       tial  match.   All the various matching items in a pattern behave as if
8823       the subject string is potentially complete. For example, \z, \Z, and  $
8824       match  at  the end of the subject, as normal, and for \b and \B the end
8825       of the subject is treated as a non-alphanumeric.
8826
8827       If there is more than one partial match, the first one that  was  found
8828       provides the data that is returned. Consider this pattern:
8829
8830         /123\w+X|dogY/
8831
8832       If  this is matched against the subject string "abc123dog", both alter-
8833       natives fail to match, but the end of the  subject  is  reached  during
8834       matching,  so  PCRE_ERROR_PARTIAL is returned. The offsets are set to 3
8835       and 9, identifying "123dog" as the first partial match that was  found.
8836       (In  this  example, there are two partial matches, because "dog" on its
8837       own partially matches the second alternative.)
8838
8839   PCRE_PARTIAL_HARD WITH pcre_exec() OR pcre[16|32]_exec()
8840
8841       If PCRE_PARTIAL_HARD is  set  for  pcre_exec()  or  pcre[16|32]_exec(),
8842       PCRE_ERROR_PARTIAL  is  returned  as  soon as a partial match is found,
8843       without continuing to search for possible complete matches. This option
8844       is "hard" because it prefers an earlier partial match over a later com-
8845       plete match. For this reason, the assumption is made that  the  end  of
8846       the  supplied  subject  string may not be the true end of the available
8847       data, and so, if \z, \Z, \b, \B, or $ are encountered at the end of the
8848       subject,  the  result is PCRE_ERROR_PARTIAL, provided that at least one
8849       character in the subject has been inspected.
8850
8851       Setting PCRE_PARTIAL_HARD also affects the way UTF-8 and UTF-16 subject
8852       strings  are checked for validity. Normally, an invalid sequence causes
8853       the error PCRE_ERROR_BADUTF8 or PCRE_ERROR_BADUTF16.  However,  in  the
8854       special  case  of  a  truncated  character  at  the end of the subject,
8855       PCRE_ERROR_SHORTUTF8  or   PCRE_ERROR_SHORTUTF16   is   returned   when
8856       PCRE_PARTIAL_HARD is set.
8857
8858   Comparing hard and soft partial matching
8859
8860       The  difference  between the two partial matching options can be illus-
8861       trated by a pattern such as:
8862
8863         /dog(sbody)?/
8864
8865       This matches either "dog" or "dogsbody", greedily (that is, it  prefers
8866       the  longer  string  if  possible). If it is matched against the string
8867       "dog" with PCRE_PARTIAL_SOFT, it yields a  complete  match  for  "dog".
8868       However, if PCRE_PARTIAL_HARD is set, the result is PCRE_ERROR_PARTIAL.
8869       On the other hand, if the pattern is made ungreedy the result  is  dif-
8870       ferent:
8871
8872         /dog(sbody)??/
8873
8874       In  this  case  the  result  is always a complete match because that is
8875       found first, and matching never  continues  after  finding  a  complete
8876       match. It might be easier to follow this explanation by thinking of the
8877       two patterns like this:
8878
8879         /dog(sbody)?/    is the same as  /dogsbody|dog/
8880         /dog(sbody)??/   is the same as  /dog|dogsbody/
8881
8882       The second pattern will never match "dogsbody", because it will  always
8883       find the shorter match first.
8884
8885
8886PARTIAL MATCHING USING pcre_dfa_exec() OR pcre[16|32]_dfa_exec()
8887
8888       The DFA functions move along the subject string character by character,
8889       without backtracking, searching for  all  possible  matches  simultane-
8890       ously.  If the end of the subject is reached before the end of the pat-
8891       tern, there is the possibility of a partial match, again provided  that
8892       at least one character has been inspected.
8893
8894       When  PCRE_PARTIAL_SOFT  is set, PCRE_ERROR_PARTIAL is returned only if
8895       there have been no complete matches. Otherwise,  the  complete  matches
8896       are  returned.   However,  if PCRE_PARTIAL_HARD is set, a partial match
8897       takes precedence over any complete matches. The portion of  the  string
8898       that  was  inspected when the longest partial match was found is set as
8899       the first matching string, provided there are at least two slots in the
8900       offsets vector.
8901
8902       Because  the  DFA functions always search for all possible matches, and
8903       there is no difference between greedy and  ungreedy  repetition,  their
8904       behaviour  is  different  from  the  standard  functions when PCRE_PAR-
8905       TIAL_HARD is  set.  Consider  the  string  "dog"  matched  against  the
8906       ungreedy pattern shown above:
8907
8908         /dog(sbody)??/
8909
8910       Whereas  the  standard functions stop as soon as they find the complete
8911       match for "dog", the DFA functions also  find  the  partial  match  for
8912       "dogsbody", and so return that when PCRE_PARTIAL_HARD is set.
8913
8914
8915PARTIAL MATCHING AND WORD BOUNDARIES
8916
8917       If  a  pattern ends with one of sequences \b or \B, which test for word
8918       boundaries, partial matching with PCRE_PARTIAL_SOFT can  give  counter-
8919       intuitive results. Consider this pattern:
8920
8921         /\bcat\b/
8922
8923       This matches "cat", provided there is a word boundary at either end. If
8924       the subject string is "the cat", the comparison of the final "t" with a
8925       following  character  cannot  take  place, so a partial match is found.
8926       However, normal matching carries on, and \b matches at the end  of  the
8927       subject  when  the  last  character is a letter, so a complete match is
8928       found.  The  result,  therefore,  is  not   PCRE_ERROR_PARTIAL.   Using
8929       PCRE_PARTIAL_HARD  in  this case does yield PCRE_ERROR_PARTIAL, because
8930       then the partial match takes precedence.
8931
8932
8933FORMERLY RESTRICTED PATTERNS
8934
8935       For releases of PCRE prior to 8.00, because of the way certain internal
8936       optimizations   were  implemented  in  the  pcre_exec()  function,  the
8937       PCRE_PARTIAL option (predecessor of  PCRE_PARTIAL_SOFT)  could  not  be
8938       used  with all patterns. From release 8.00 onwards, the restrictions no
8939       longer apply, and partial matching with can be requested for  any  pat-
8940       tern.
8941
8942       Items that were formerly restricted were repeated single characters and
8943       repeated metasequences. If PCRE_PARTIAL was set for a pattern that  did
8944       not  conform  to  the restrictions, pcre_exec() returned the error code
8945       PCRE_ERROR_BADPARTIAL (-13). This error code is no longer in  use.  The
8946       PCRE_INFO_OKPARTIAL  call  to pcre_fullinfo() to find out if a compiled
8947       pattern can be used for partial matching now always returns 1.
8948
8949
8950EXAMPLE OF PARTIAL MATCHING USING PCRETEST
8951
8952       If the escape sequence \P is present  in  a  pcretest  data  line,  the
8953       PCRE_PARTIAL_SOFT  option  is  used  for  the  match.  Here is a run of
8954       pcretest that uses the date example quoted above:
8955
8956           re> /^\d?\d(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)\d\d$/
8957         data> 25jun04\P
8958          0: 25jun04
8959          1: jun
8960         data> 25dec3\P
8961         Partial match: 23dec3
8962         data> 3ju\P
8963         Partial match: 3ju
8964         data> 3juj\P
8965         No match
8966         data> j\P
8967         No match
8968
8969       The first data string is matched  completely,  so  pcretest  shows  the
8970       matched  substrings.  The  remaining four strings do not match the com-
8971       plete pattern, but the first two are partial matches. Similar output is
8972       obtained if DFA matching is used.
8973
8974       If  the escape sequence \P is present more than once in a pcretest data
8975       line, the PCRE_PARTIAL_HARD option is set for the match.
8976
8977
8978MULTI-SEGMENT MATCHING WITH pcre_dfa_exec() OR pcre[16|32]_dfa_exec()
8979
8980       When a partial match has been found using a DFA matching  function,  it
8981       is  possible to continue the match by providing additional subject data
8982       and calling the function again with the same compiled  regular  expres-
8983       sion,  this time setting the PCRE_DFA_RESTART option. You must pass the
8984       same working space as before, because this is where details of the pre-
8985       vious  partial  match  are  stored.  Here is an example using pcretest,
8986       using the \R escape sequence to set  the  PCRE_DFA_RESTART  option  (\D
8987       specifies the use of the DFA matching function):
8988
8989           re> /^\d?\d(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)\d\d$/
8990         data> 23ja\P\D
8991         Partial match: 23ja
8992         data> n05\R\D
8993          0: n05
8994
8995       The  first  call has "23ja" as the subject, and requests partial match-
8996       ing; the second call  has  "n05"  as  the  subject  for  the  continued
8997       (restarted)  match.   Notice  that when the match is complete, only the
8998       last part is shown; PCRE does  not  retain  the  previously  partially-
8999       matched  string. It is up to the calling program to do that if it needs
9000       to.
9001
9002       That means that, for an unanchored pattern, if a continued match fails,
9003       it  is  not  possible  to  try  again at a new starting point. All this
9004       facility is capable of doing is  continuing  with  the  previous  match
9005       attempt.  In  the previous example, if the second set of data is "ug23"
9006       the result is no match, even though there would be a match for  "aug23"
9007       if  the entire string were given at once. Depending on the application,
9008       this may or may not be what you want.  The only way to allow for start-
9009       ing  again  at  the next character is to retain the matched part of the
9010       subject and try a new complete match.
9011
9012       You can set the PCRE_PARTIAL_SOFT  or  PCRE_PARTIAL_HARD  options  with
9013       PCRE_DFA_RESTART  to  continue partial matching over multiple segments.
9014       This facility can be used to pass very long subject strings to the  DFA
9015       matching functions.
9016
9017
9018MULTI-SEGMENT MATCHING WITH pcre_exec() OR pcre[16|32]_exec()
9019
9020       From  release 8.00, the standard matching functions can also be used to
9021       do multi-segment matching. Unlike the DFA functions, it is not possible
9022       to  restart the previous match with a new segment of data. Instead, new
9023       data must be added to the previous subject string, and the entire match
9024       re-run,  starting from the point where the partial match occurred. Ear-
9025       lier data can be discarded.
9026
9027       It is best to use PCRE_PARTIAL_HARD in this situation, because it  does
9028       not  treat the end of a segment as the end of the subject when matching
9029       \z, \Z, \b, \B, and $. Consider  an  unanchored  pattern  that  matches
9030       dates:
9031
9032           re> /\d?\d(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)\d\d/
9033         data> The date is 23ja\P\P
9034         Partial match: 23ja
9035
9036       At  this stage, an application could discard the text preceding "23ja",
9037       add on text from the next  segment,  and  call  the  matching  function
9038       again.  Unlike  the  DFA matching functions, the entire matching string
9039       must always be available, and the complete matching process occurs  for
9040       each call, so more memory and more processing time is needed.
9041
9042       Note:  If  the pattern contains lookbehind assertions, or \K, or starts
9043       with \b or \B, the string that is returned for a partial match includes
9044       characters  that precede the start of what would be returned for a com-
9045       plete match, because it contains all the characters that were inspected
9046       during the partial match.
9047
9048
9049ISSUES WITH MULTI-SEGMENT MATCHING
9050
9051       Certain types of pattern may give problems with multi-segment matching,
9052       whichever matching function is used.
9053
9054       1. If the pattern contains a test for the beginning of a line, you need
9055       to  pass  the  PCRE_NOTBOL  option when the subject string for any call
9056       does start at the beginning of a line.  There  is  also  a  PCRE_NOTEOL
9057       option, but in practice when doing multi-segment matching you should be
9058       using PCRE_PARTIAL_HARD, which includes the effect of PCRE_NOTEOL.
9059
9060       2. Lookbehind assertions that have already been obeyed are catered  for
9061       in the offsets that are returned for a partial match. However a lookbe-
9062       hind assertion later in the pattern could require even earlier  charac-
9063       ters   to  be  inspected.  You  can  handle  this  case  by  using  the
9064       PCRE_INFO_MAXLOOKBEHIND    option    of    the    pcre_fullinfo()    or
9065       pcre[16|32]_fullinfo()  functions  to  obtain the length of the longest
9066       lookbehind in the pattern. This length  is  given  in  characters,  not
9067       bytes.  If  you  always retain at least that many characters before the
9068       partially matched string, all should be  well.  (Of  course,  near  the
9069       start of the subject, fewer characters may be present; in that case all
9070       characters should be retained.)
9071
9072       From release 8.33, there is a more accurate way of deciding which char-
9073       acters  to  retain.  Instead  of  subtracting the length of the longest
9074       lookbehind from the  earliest  inspected  character  (offsets[0]),  the
9075       match  start  position  (offsets[2]) should be used, and the next match
9076       attempt started at the offsets[2] character by setting the  startoffset
9077       argument of pcre_exec() or pcre_dfa_exec().
9078
9079       For  example, if the pattern "(?<=123)abc" is partially matched against
9080       the string "xx123a", the three offset values returned are 2, 6, and  5.
9081       This  indicates  that  the  matching  process that gave a partial match
9082       started at offset 5, but the characters "123a" were all inspected.  The
9083       maximum  lookbehind  for  that pattern is 3, so taking that away from 5
9084       shows that we need only keep "123a", and the next match attempt can  be
9085       started at offset 3 (that is, at "a") when further characters have been
9086       added. When the match start is not the  earliest  inspected  character,
9087       pcretest shows it explicitly:
9088
9089           re> "(?<=123)abc"
9090         data> xx123a\P\P
9091         Partial match at offset 5: 123a
9092
9093       3.  Because a partial match must always contain at least one character,
9094       what might be considered a partial match of an  empty  string  actually
9095       gives a "no match" result. For example:
9096
9097           re> /c(?<=abc)x/
9098         data> ab\P
9099         No match
9100
9101       If the next segment begins "cx", a match should be found, but this will
9102       only happen if characters from the previous segment are  retained.  For
9103       this  reason,  a  "no  match"  result should be interpreted as "partial
9104       match of an empty string" when the pattern contains lookbehinds.
9105
9106       4. Matching a subject string that is split into multiple  segments  may
9107       not  always produce exactly the same result as matching over one single
9108       long string, especially when PCRE_PARTIAL_SOFT  is  used.  The  section
9109       "Partial  Matching  and  Word Boundaries" above describes an issue that
9110       arises if the pattern ends with \b or \B. Another  kind  of  difference
9111       may  occur when there are multiple matching possibilities, because (for
9112       PCRE_PARTIAL_SOFT) a partial match result is given only when there  are
9113       no completed matches. This means that as soon as the shortest match has
9114       been found, continuation to a new subject segment is no  longer  possi-
9115       ble. Consider again this pcretest example:
9116
9117           re> /dog(sbody)?/
9118         data> dogsb\P
9119          0: dog
9120         data> do\P\D
9121         Partial match: do
9122         data> gsb\R\P\D
9123          0: g
9124         data> dogsbody\D
9125          0: dogsbody
9126          1: dog
9127
9128       The  first  data  line passes the string "dogsb" to a standard matching
9129       function, setting the PCRE_PARTIAL_SOFT option. Although the string  is
9130       a  partial  match for "dogsbody", the result is not PCRE_ERROR_PARTIAL,
9131       because the shorter string "dog" is a complete match.  Similarly,  when
9132       the  subject  is  presented to a DFA matching function in several parts
9133       ("do" and "gsb" being the first two) the match  stops  when  "dog"  has
9134       been  found, and it is not possible to continue.  On the other hand, if
9135       "dogsbody" is presented as a single string,  a  DFA  matching  function
9136       finds both matches.
9137
9138       Because  of  these  problems,  it is best to use PCRE_PARTIAL_HARD when
9139       matching multi-segment data. The example  above  then  behaves  differ-
9140       ently:
9141
9142           re> /dog(sbody)?/
9143         data> dogsb\P\P
9144         Partial match: dogsb
9145         data> do\P\D
9146         Partial match: do
9147         data> gsb\R\P\P\D
9148         Partial match: gsb
9149
9150       5. Patterns that contain alternatives at the top level which do not all
9151       start with the  same  pattern  item  may  not  work  as  expected  when
9152       PCRE_DFA_RESTART is used. For example, consider this pattern:
9153
9154         1234|3789
9155
9156       If  the  first  part of the subject is "ABC123", a partial match of the
9157       first alternative is found at offset 3. There is no partial  match  for
9158       the second alternative, because such a match does not start at the same
9159       point in the subject string. Attempting to  continue  with  the  string
9160       "7890"  does  not  yield  a  match because only those alternatives that
9161       match at one point in the subject are remembered.  The  problem  arises
9162       because  the  start  of the second alternative matches within the first
9163       alternative. There is no problem with  anchored  patterns  or  patterns
9164       such as:
9165
9166         1234|ABCD
9167
9168       where  no  string can be a partial match for both alternatives. This is
9169       not a problem if a standard matching  function  is  used,  because  the
9170       entire match has to be rerun each time:
9171
9172           re> /1234|3789/
9173         data> ABC123\P\P
9174         Partial match: 123
9175         data> 1237890
9176          0: 3789
9177
9178       Of course, instead of using PCRE_DFA_RESTART, the same technique of re-
9179       running the entire match can also be used with the DFA  matching  func-
9180       tions.  Another  possibility  is to work with two buffers. If a partial
9181       match at offset n in the first buffer is followed by  "no  match"  when
9182       PCRE_DFA_RESTART  is  used on the second buffer, you can then try a new
9183       match starting at offset n+1 in the first buffer.
9184
9185
9186AUTHOR
9187
9188       Philip Hazel
9189       University Computing Service
9190       Cambridge CB2 3QH, England.
9191
9192
9193REVISION
9194
9195       Last updated: 02 July 2013
9196       Copyright (c) 1997-2013 University of Cambridge.
9197------------------------------------------------------------------------------
9198
9199
9200PCREPRECOMPILE(3)          Library Functions Manual          PCREPRECOMPILE(3)
9201
9202
9203
9204NAME
9205       PCRE - Perl-compatible regular expressions
9206
9207SAVING AND RE-USING PRECOMPILED PCRE PATTERNS
9208
9209       If  you  are running an application that uses a large number of regular
9210       expression patterns, it may be useful to store them  in  a  precompiled
9211       form  instead  of  having to compile them every time the application is
9212       run.  If you are not  using  any  private  character  tables  (see  the
9213       pcre_maketables()  documentation),  this is relatively straightforward.
9214       If you are using private tables, it is a little bit  more  complicated.
9215       However,  if you are using the just-in-time optimization feature, it is
9216       not possible to save and reload the JIT data.
9217
9218       If you save compiled patterns to a file, you can copy them to a differ-
9219       ent host and run them there. If the two hosts have different endianness
9220       (byte    order),    you     should     run     the     pcre[16|32]_pat-
9221       tern_to_host_byte_order()  function  on  the  new host before trying to
9222       match the pattern. The matching functions return  PCRE_ERROR_BADENDIAN-
9223       NESS if they detect a pattern with the wrong endianness.
9224
9225       Compiling  regular  expressions with one version of PCRE for use with a
9226       different version is not guaranteed to work and may cause crashes,  and
9227       saving  and  restoring  a  compiled  pattern loses any JIT optimization
9228       data.
9229
9230
9231SAVING A COMPILED PATTERN
9232
9233       The value returned by pcre[16|32]_compile() points to a single block of
9234       memory  that  holds  the  compiled pattern and associated data. You can
9235       find   the   length   of   this   block    in    bytes    by    calling
9236       pcre[16|32]_fullinfo() with an argument of PCRE_INFO_SIZE. You can then
9237       save the data in any appropriate manner. Here is sample  code  for  the
9238       8-bit  library  that  compiles  a  pattern  and writes it to a file. It
9239       assumes that the variable fd refers to a file that is open for output:
9240
9241         int erroroffset, rc, size;
9242         char *error;
9243         pcre *re;
9244
9245         re = pcre_compile("my pattern", 0, &error, &erroroffset, NULL);
9246         if (re == NULL) { ... handle errors ... }
9247         rc = pcre_fullinfo(re, NULL, PCRE_INFO_SIZE, &size);
9248         if (rc < 0) { ... handle errors ... }
9249         rc = fwrite(re, 1, size, fd);
9250         if (rc != size) { ... handle errors ... }
9251
9252       In this example, the bytes  that  comprise  the  compiled  pattern  are
9253       copied  exactly.  Note that this is binary data that may contain any of
9254       the 256 possible byte  values.  On  systems  that  make  a  distinction
9255       between binary and non-binary data, be sure that the file is opened for
9256       binary output.
9257
9258       If you want to write more than one pattern to a file, you will have  to
9259       devise  a  way of separating them. For binary data, preceding each pat-
9260       tern with its length is probably  the  most  straightforward  approach.
9261       Another  possibility is to write out the data in hexadecimal instead of
9262       binary, one pattern to a line.
9263
9264       Saving compiled patterns in a file is only one possible way of  storing
9265       them  for later use. They could equally well be saved in a database, or
9266       in the memory of some daemon process that passes them  via  sockets  to
9267       the processes that want them.
9268
9269       If the pattern has been studied, it is also possible to save the normal
9270       study data in a similar way to the compiled pattern itself. However, if
9271       the PCRE_STUDY_JIT_COMPILE was used, the just-in-time data that is cre-
9272       ated cannot be saved because it is too dependent on the  current  envi-
9273       ronment.    When    studying    generates    additional    information,
9274       pcre[16|32]_study() returns  a  pointer  to  a  pcre[16|32]_extra  data
9275       block.  Its  format  is defined in the section on matching a pattern in
9276       the pcreapi documentation. The study_data field points  to  the  binary
9277       study  data,  and this is what you must save (not the pcre[16|32]_extra
9278       block itself). The length of the study data can be obtained by  calling
9279       pcre[16|32]_fullinfo()  with an argument of PCRE_INFO_STUDYSIZE. Remem-
9280       ber to check that  pcre[16|32]_study()  did  return  a  non-NULL  value
9281       before trying to save the study data.
9282
9283
9284RE-USING A PRECOMPILED PATTERN
9285
9286       Re-using  a  precompiled pattern is straightforward. Having reloaded it
9287       into main memory,  called  pcre[16|32]_pattern_to_host_byte_order()  if
9288       necessary,    you   pass   its   pointer   to   pcre[16|32]_exec()   or
9289       pcre[16|32]_dfa_exec() in the usual way.
9290
9291       However, if you passed a pointer to custom character  tables  when  the
9292       pattern  was compiled (the tableptr argument of pcre[16|32]_compile()),
9293       you  must  now  pass  a  similar  pointer  to   pcre[16|32]_exec()   or
9294       pcre[16|32]_dfa_exec(),  because the value saved with the compiled pat-
9295       tern will obviously be nonsense. A field in a pcre[16|32]_extra() block
9296       is  used  to  pass this data, as described in the section on matching a
9297       pattern in the pcreapi documentation.
9298
9299       Warning: The tables that pcre_exec() and pcre_dfa_exec()  use  must  be
9300       the same as those that were used when the pattern was compiled. If this
9301       is not the case, the behaviour is undefined.
9302
9303       If you did not provide custom character tables  when  the  pattern  was
9304       compiled, the pointer in the compiled pattern is NULL, which causes the
9305       matching functions to use PCRE's internal tables. Thus, you do not need
9306       to take any special action at run time in this case.
9307
9308       If  you  saved study data with the compiled pattern, you need to create
9309       your own pcre[16|32]_extra data block and set the study_data  field  to
9310       point   to   the   reloaded   study   data.   You  must  also  set  the
9311       PCRE_EXTRA_STUDY_DATA bit in the flags field  to  indicate  that  study
9312       data  is present. Then pass the pcre[16|32]_extra block to the matching
9313       function in the usual way. If the pattern was studied for  just-in-time
9314       optimization,  that  data  cannot  be  saved,  and  so  is  lost  by  a
9315       save/restore cycle.
9316
9317
9318COMPATIBILITY WITH DIFFERENT PCRE RELEASES
9319
9320       In general, it is safest to  recompile  all  saved  patterns  when  you
9321       update  to  a new PCRE release, though not all updates actually require
9322       this.
9323
9324
9325AUTHOR
9326
9327       Philip Hazel
9328       University Computing Service
9329       Cambridge CB2 3QH, England.
9330
9331
9332REVISION
9333
9334       Last updated: 12 November 2013
9335       Copyright (c) 1997-2013 University of Cambridge.
9336------------------------------------------------------------------------------
9337
9338
9339PCREPERFORM(3)             Library Functions Manual             PCREPERFORM(3)
9340
9341
9342
9343NAME
9344       PCRE - Perl-compatible regular expressions
9345
9346PCRE PERFORMANCE
9347
9348       Two  aspects  of performance are discussed below: memory usage and pro-
9349       cessing time. The way you express your pattern as a regular  expression
9350       can affect both of them.
9351
9352
9353COMPILED PATTERN MEMORY USAGE
9354
9355       Patterns  are compiled by PCRE into a reasonably efficient interpretive
9356       code, so that most simple patterns do not  use  much  memory.  However,
9357       there  is  one case where the memory usage of a compiled pattern can be
9358       unexpectedly large. If a parenthesized subpattern has a quantifier with
9359       a minimum greater than 1 and/or a limited maximum, the whole subpattern
9360       is repeated in the compiled code. For example, the pattern
9361
9362         (abc|def){2,4}
9363
9364       is compiled as if it were
9365
9366         (abc|def)(abc|def)((abc|def)(abc|def)?)?
9367
9368       (Technical aside: It is done this way so that backtrack  points  within
9369       each of the repetitions can be independently maintained.)
9370
9371       For  regular expressions whose quantifiers use only small numbers, this
9372       is not usually a problem. However, if the numbers are large,  and  par-
9373       ticularly  if  such repetitions are nested, the memory usage can become
9374       an embarrassment. For example, the very simple pattern
9375
9376         ((ab){1,1000}c){1,3}
9377
9378       uses 51K bytes when compiled using the 8-bit library. When PCRE is com-
9379       piled  with  its  default  internal pointer size of two bytes, the size
9380       limit on a compiled pattern is 64K data units, and this is reached with
9381       the  above  pattern  if  the outer repetition is increased from 3 to 4.
9382       PCRE can be compiled to use larger internal pointers  and  thus  handle
9383       larger  compiled patterns, but it is better to try to rewrite your pat-
9384       tern to use less memory if you can.
9385
9386       One way of reducing the memory usage for such patterns is to  make  use
9387       of PCRE's "subroutine" facility. Re-writing the above pattern as
9388
9389         ((ab)(?2){0,999}c)(?1){0,2}
9390
9391       reduces the memory requirements to 18K, and indeed it remains under 20K
9392       even with the outer repetition increased to 100. However, this  pattern
9393       is  not  exactly equivalent, because the "subroutine" calls are treated
9394       as atomic groups into which there can be no backtracking if there is  a
9395       subsequent  matching  failure.  Therefore,  PCRE cannot do this kind of
9396       rewriting automatically.  Furthermore, there is a  noticeable  loss  of
9397       speed  when executing the modified pattern. Nevertheless, if the atomic
9398       grouping is not a problem and the loss of  speed  is  acceptable,  this
9399       kind  of  rewriting will allow you to process patterns that PCRE cannot
9400       otherwise handle.
9401
9402
9403STACK USAGE AT RUN TIME
9404
9405       When pcre_exec() or pcre[16|32]_exec() is used  for  matching,  certain
9406       kinds  of  pattern  can  cause  it  to use large amounts of the process
9407       stack. In some environments the default process stack is  quite  small,
9408       and  if it runs out the result is often SIGSEGV. This issue is probably
9409       the most frequently raised problem with PCRE.  Rewriting  your  pattern
9410       can  often  help.  The  pcrestack documentation discusses this issue in
9411       detail.
9412
9413
9414PROCESSING TIME
9415
9416       Certain items in regular expression patterns are processed  more  effi-
9417       ciently than others. It is more efficient to use a character class like
9418       [aeiou]  than  a  set  of   single-character   alternatives   such   as
9419       (a|e|i|o|u).  In  general,  the simplest construction that provides the
9420       required behaviour is usually the most efficient. Jeffrey Friedl's book
9421       contains  a  lot  of useful general discussion about optimizing regular
9422       expressions for efficient performance. This  document  contains  a  few
9423       observations about PCRE.
9424
9425       Using  Unicode  character  properties  (the  \p, \P, and \X escapes) is
9426       slow, because PCRE has to use a multi-stage table  lookup  whenever  it
9427       needs  a  character's  property. If you can find an alternative pattern
9428       that does not use character properties, it will probably be faster.
9429
9430       By default, the escape sequences \b, \d, \s,  and  \w,  and  the  POSIX
9431       character  classes  such  as  [:alpha:]  do not use Unicode properties,
9432       partly for backwards compatibility, and partly for performance reasons.
9433       However,  you can set PCRE_UCP if you want Unicode character properties
9434       to be used. This can double the matching time for  items  such  as  \d,
9435       when matched with a traditional matching function; the performance loss
9436       is less with a DFA matching function, and in both cases  there  is  not
9437       much difference for \b.
9438
9439       When  a  pattern  begins  with .* not in parentheses, or in parentheses
9440       that are not the subject of a backreference, and the PCRE_DOTALL option
9441       is  set, the pattern is implicitly anchored by PCRE, since it can match
9442       only at the start of a subject string. However, if PCRE_DOTALL  is  not
9443       set,  PCRE  cannot  make this optimization, because the . metacharacter
9444       does not then match a newline, and if the subject string contains  new-
9445       lines,  the  pattern may match from the character immediately following
9446       one of them instead of from the very start. For example, the pattern
9447
9448         .*second
9449
9450       matches the subject "first\nand second" (where \n stands for a  newline
9451       character),  with the match starting at the seventh character. In order
9452       to do this, PCRE has to retry the match starting after every newline in
9453       the subject.
9454
9455       If  you  are using such a pattern with subject strings that do not con-
9456       tain newlines, the best performance is obtained by setting PCRE_DOTALL,
9457       or  starting  the pattern with ^.* or ^.*? to indicate explicit anchor-
9458       ing. That saves PCRE from having to scan along the subject looking  for
9459       a newline to restart at.
9460
9461       Beware  of  patterns  that contain nested indefinite repeats. These can
9462       take a long time to run when applied to a string that does  not  match.
9463       Consider the pattern fragment
9464
9465         ^(a+)*
9466
9467       This  can  match "aaaa" in 16 different ways, and this number increases
9468       very rapidly as the string gets longer. (The * repeat can match  0,  1,
9469       2,  3, or 4 times, and for each of those cases other than 0 or 4, the +
9470       repeats can match different numbers of times.) When  the  remainder  of
9471       the pattern is such that the entire match is going to fail, PCRE has in
9472       principle to try  every  possible  variation,  and  this  can  take  an
9473       extremely long time, even for relatively short strings.
9474
9475       An optimization catches some of the more simple cases such as
9476
9477         (a+)*b
9478
9479       where  a  literal  character  follows. Before embarking on the standard
9480       matching procedure, PCRE checks that there is a "b" later in  the  sub-
9481       ject  string, and if there is not, it fails the match immediately. How-
9482       ever, when there is no following literal this  optimization  cannot  be
9483       used. You can see the difference by comparing the behaviour of
9484
9485         (a+)*\d
9486
9487       with  the  pattern  above.  The former gives a failure almost instantly
9488       when applied to a whole line of  "a"  characters,  whereas  the  latter
9489       takes an appreciable time with strings longer than about 20 characters.
9490
9491       In many cases, the solution to this kind of performance issue is to use
9492       an atomic group or a possessive quantifier.
9493
9494
9495AUTHOR
9496
9497       Philip Hazel
9498       University Computing Service
9499       Cambridge CB2 3QH, England.
9500
9501
9502REVISION
9503
9504       Last updated: 25 August 2012
9505       Copyright (c) 1997-2012 University of Cambridge.
9506------------------------------------------------------------------------------
9507
9508
9509PCREPOSIX(3)               Library Functions Manual               PCREPOSIX(3)
9510
9511
9512
9513NAME
9514       PCRE - Perl-compatible regular expressions.
9515
9516SYNOPSIS
9517
9518       #include <pcreposix.h>
9519
9520       int regcomp(regex_t *preg, const char *pattern,
9521            int cflags);
9522
9523       int regexec(regex_t *preg, const char *string,
9524            size_t nmatch, regmatch_t pmatch[], int eflags);
9525            size_t regerror(int errcode, const regex_t *preg,
9526            char *errbuf, size_t errbuf_size);
9527
9528       void regfree(regex_t *preg);
9529
9530
9531DESCRIPTION
9532
9533       This  set  of functions provides a POSIX-style API for the PCRE regular
9534       expression 8-bit library. See the pcreapi documentation for a  descrip-
9535       tion  of  PCRE's native API, which contains much additional functional-
9536       ity. There is no POSIX-style  wrapper  for  PCRE's  16-bit  and  32-bit
9537       library.
9538
9539       The functions described here are just wrapper functions that ultimately
9540       call  the  PCRE  native  API.  Their  prototypes  are  defined  in  the
9541       pcreposix.h  header  file,  and  on  Unix systems the library itself is
9542       called pcreposix.a, so can be accessed by  adding  -lpcreposix  to  the
9543       command  for  linking  an application that uses them. Because the POSIX
9544       functions call the native ones, it is also necessary to add -lpcre.
9545
9546       I have implemented only those POSIX option bits that can be  reasonably
9547       mapped  to PCRE native options. In addition, the option REG_EXTENDED is
9548       defined with the value zero. This has no  effect,  but  since  programs
9549       that  are  written  to  the POSIX interface often use it, this makes it
9550       easier to slot in PCRE as a replacement library.  Other  POSIX  options
9551       are not even defined.
9552
9553       There  are also some other options that are not defined by POSIX. These
9554       have been added at the request of users who want to make use of certain
9555       PCRE-specific features via the POSIX calling interface.
9556
9557       When  PCRE  is  called  via these functions, it is only the API that is
9558       POSIX-like in style. The syntax and semantics of  the  regular  expres-
9559       sions  themselves  are  still  those of Perl, subject to the setting of
9560       various PCRE options, as described below. "POSIX-like in  style"  means
9561       that  the  API  approximates  to  the POSIX definition; it is not fully
9562       POSIX-compatible, and in multi-byte encoding  domains  it  is  probably
9563       even less compatible.
9564
9565       The  header for these functions is supplied as pcreposix.h to avoid any
9566       potential clash with other POSIX  libraries.  It  can,  of  course,  be
9567       renamed or aliased as regex.h, which is the "correct" name. It provides
9568       two structure types, regex_t for  compiled  internal  forms,  and  reg-
9569       match_t  for  returning  captured substrings. It also defines some con-
9570       stants whose names start  with  "REG_";  these  are  used  for  setting
9571       options and identifying error codes.
9572
9573
9574COMPILING A PATTERN
9575
9576       The  function regcomp() is called to compile a pattern into an internal
9577       form. The pattern is a C string terminated by a  binary  zero,  and  is
9578       passed  in  the  argument  pattern. The preg argument is a pointer to a
9579       regex_t structure that is used as a base for storing information  about
9580       the compiled regular expression.
9581
9582       The argument cflags is either zero, or contains one or more of the bits
9583       defined by the following macros:
9584
9585         REG_DOTALL
9586
9587       The PCRE_DOTALL option is set when the regular expression is passed for
9588       compilation to the native function. Note that REG_DOTALL is not part of
9589       the POSIX standard.
9590
9591         REG_ICASE
9592
9593       The PCRE_CASELESS option is set when the regular expression  is  passed
9594       for compilation to the native function.
9595
9596         REG_NEWLINE
9597
9598       The  PCRE_MULTILINE option is set when the regular expression is passed
9599       for compilation to the native function. Note that this does  not  mimic
9600       the  defined  POSIX  behaviour  for REG_NEWLINE (see the following sec-
9601       tion).
9602
9603         REG_NOSUB
9604
9605       The PCRE_NO_AUTO_CAPTURE option is set when the regular  expression  is
9606       passed for compilation to the native function. In addition, when a pat-
9607       tern that is compiled with this flag is passed to regexec() for  match-
9608       ing,  the  nmatch  and  pmatch  arguments  are ignored, and no captured
9609       strings are returned.
9610
9611         REG_UCP
9612
9613       The PCRE_UCP option is set when the regular expression  is  passed  for
9614       compilation  to  the  native  function. This causes PCRE to use Unicode
9615       properties when matchine \d, \w,  etc.,  instead  of  just  recognizing
9616       ASCII values. Note that REG_UTF8 is not part of the POSIX standard.
9617
9618         REG_UNGREEDY
9619
9620       The  PCRE_UNGREEDY  option is set when the regular expression is passed
9621       for compilation to the native function. Note that REG_UNGREEDY  is  not
9622       part of the POSIX standard.
9623
9624         REG_UTF8
9625
9626       The  PCRE_UTF8  option is set when the regular expression is passed for
9627       compilation to the native function. This causes the pattern itself  and
9628       all  data  strings used for matching it to be treated as UTF-8 strings.
9629       Note that REG_UTF8 is not part of the POSIX standard.
9630
9631       In the absence of these flags, no options  are  passed  to  the  native
9632       function.   This  means  the  the  regex  is compiled with PCRE default
9633       semantics. In particular, the way it handles newline characters in  the
9634       subject  string  is  the Perl way, not the POSIX way. Note that setting
9635       PCRE_MULTILINE has only some of the effects specified for  REG_NEWLINE.
9636       It  does not affect the way newlines are matched by . (they are not) or
9637       by a negative class such as [^a] (they are).
9638
9639       The yield of regcomp() is zero on success, and non-zero otherwise.  The
9640       preg structure is filled in on success, and one member of the structure
9641       is public: re_nsub contains the number of capturing subpatterns in  the
9642       regular expression. Various error codes are defined in the header file.
9643
9644       NOTE:  If  the  yield of regcomp() is non-zero, you must not attempt to
9645       use the contents of the preg structure. If, for example, you pass it to
9646       regexec(), the result is undefined and your program is likely to crash.
9647
9648
9649MATCHING NEWLINE CHARACTERS
9650
9651       This area is not simple, because POSIX and Perl take different views of
9652       things.  It is not possible to get PCRE to obey  POSIX  semantics,  but
9653       then  PCRE was never intended to be a POSIX engine. The following table
9654       lists the different possibilities for matching  newline  characters  in
9655       PCRE:
9656
9657                                 Default   Change with
9658
9659         . matches newline          no     PCRE_DOTALL
9660         newline matches [^a]       yes    not changeable
9661         $ matches \n at end        yes    PCRE_DOLLARENDONLY
9662         $ matches \n in middle     no     PCRE_MULTILINE
9663         ^ matches \n in middle     no     PCRE_MULTILINE
9664
9665       This is the equivalent table for POSIX:
9666
9667                                 Default   Change with
9668
9669         . matches newline          yes    REG_NEWLINE
9670         newline matches [^a]       yes    REG_NEWLINE
9671         $ matches \n at end        no     REG_NEWLINE
9672         $ matches \n in middle     no     REG_NEWLINE
9673         ^ matches \n in middle     no     REG_NEWLINE
9674
9675       PCRE's behaviour is the same as Perl's, except that there is no equiva-
9676       lent for PCRE_DOLLAR_ENDONLY in Perl. In both PCRE and Perl,  there  is
9677       no way to stop newline from matching [^a].
9678
9679       The   default  POSIX  newline  handling  can  be  obtained  by  setting
9680       PCRE_DOTALL and PCRE_DOLLAR_ENDONLY, but there is no way to  make  PCRE
9681       behave exactly as for the REG_NEWLINE action.
9682
9683
9684MATCHING A PATTERN
9685
9686       The  function  regexec()  is  called  to  match a compiled pattern preg
9687       against a given string, which is by default terminated by a  zero  byte
9688       (but  see  REG_STARTEND below), subject to the options in eflags. These
9689       can be:
9690
9691         REG_NOTBOL
9692
9693       The PCRE_NOTBOL option is set when calling the underlying PCRE matching
9694       function.
9695
9696         REG_NOTEMPTY
9697
9698       The PCRE_NOTEMPTY option is set when calling the underlying PCRE match-
9699       ing function. Note that REG_NOTEMPTY is not part of the POSIX standard.
9700       However, setting this option can give more POSIX-like behaviour in some
9701       situations.
9702
9703         REG_NOTEOL
9704
9705       The PCRE_NOTEOL option is set when calling the underlying PCRE matching
9706       function.
9707
9708         REG_STARTEND
9709
9710       The  string  is  considered to start at string + pmatch[0].rm_so and to
9711       have a terminating NUL located at string + pmatch[0].rm_eo (there  need
9712       not  actually  be  a  NUL at that location), regardless of the value of
9713       nmatch. This is a BSD extension, compatible with but not  specified  by
9714       IEEE  Standard  1003.2  (POSIX.2),  and  should be used with caution in
9715       software intended to be portable to other systems. Note that a non-zero
9716       rm_so does not imply REG_NOTBOL; REG_STARTEND affects only the location
9717       of the string, not how it is matched.
9718
9719       If the pattern was compiled with the REG_NOSUB flag, no data about  any
9720       matched  strings  is  returned.  The  nmatch  and  pmatch  arguments of
9721       regexec() are ignored.
9722
9723       If the value of nmatch is zero, or if the value pmatch is NULL, no data
9724       about any matched strings is returned.
9725
9726       Otherwise,the portion of the string that was matched, and also any cap-
9727       tured substrings, are returned via the pmatch argument, which points to
9728       an  array  of nmatch structures of type regmatch_t, containing the mem-
9729       bers rm_so and rm_eo. These contain the offset to the  first  character
9730       of  each  substring and the offset to the first character after the end
9731       of each substring, respectively. The 0th element of the vector  relates
9732       to  the  entire portion of string that was matched; subsequent elements
9733       relate to the capturing subpatterns of the regular  expression.  Unused
9734       entries in the array have both structure members set to -1.
9735
9736       A  successful  match  yields  a  zero  return;  various error codes are
9737       defined in the header file, of  which  REG_NOMATCH  is  the  "expected"
9738       failure code.
9739
9740
9741ERROR MESSAGES
9742
9743       The regerror() function maps a non-zero errorcode from either regcomp()
9744       or regexec() to a printable message. If preg is  not  NULL,  the  error
9745       should have arisen from the use of that structure. A message terminated
9746       by a binary zero is placed  in  errbuf.  The  length  of  the  message,
9747       including  the  zero, is limited to errbuf_size. The yield of the func-
9748       tion is the size of buffer needed to hold the whole message.
9749
9750
9751MEMORY USAGE
9752
9753       Compiling a regular expression causes memory to be allocated and  asso-
9754       ciated  with  the preg structure. The function regfree() frees all such
9755       memory, after which preg may no longer be used as  a  compiled  expres-
9756       sion.
9757
9758
9759AUTHOR
9760
9761       Philip Hazel
9762       University Computing Service
9763       Cambridge CB2 3QH, England.
9764
9765
9766REVISION
9767
9768       Last updated: 09 January 2012
9769       Copyright (c) 1997-2012 University of Cambridge.
9770------------------------------------------------------------------------------
9771
9772
9773PCRECPP(3)                 Library Functions Manual                 PCRECPP(3)
9774
9775
9776
9777NAME
9778       PCRE - Perl-compatible regular expressions.
9779
9780SYNOPSIS OF C++ WRAPPER
9781
9782       #include <pcrecpp.h>
9783
9784
9785DESCRIPTION
9786
9787       The  C++  wrapper  for PCRE was provided by Google Inc. Some additional
9788       functionality was added by Giuseppe Maxia. This brief man page was con-
9789       structed  from  the  notes  in the pcrecpp.h file, which should be con-
9790       sulted for further details. Note that the C++ wrapper supports only the
9791       original  8-bit  PCRE  library. There is no 16-bit or 32-bit support at
9792       present.
9793
9794
9795MATCHING INTERFACE
9796
9797       The "FullMatch" operation checks that supplied text matches a  supplied
9798       pattern  exactly.  If pointer arguments are supplied, it copies matched
9799       sub-strings that match sub-patterns into them.
9800
9801         Example: successful match
9802            pcrecpp::RE re("h.*o");
9803            re.FullMatch("hello");
9804
9805         Example: unsuccessful match (requires full match):
9806            pcrecpp::RE re("e");
9807            !re.FullMatch("hello");
9808
9809         Example: creating a temporary RE object:
9810            pcrecpp::RE("h.*o").FullMatch("hello");
9811
9812       You can pass in a "const char*" or a "string" for "text". The  examples
9813       below  tend to use a const char*. You can, as in the different examples
9814       above, store the RE object explicitly in a variable or use a  temporary
9815       RE  object.  The  examples below use one mode or the other arbitrarily.
9816       Either could correctly be used for any of these examples.
9817
9818       You must supply extra pointer arguments to extract matched subpieces.
9819
9820         Example: extracts "ruby" into "s" and 1234 into "i"
9821            int i;
9822            string s;
9823            pcrecpp::RE re("(\\w+):(\\d+)");
9824            re.FullMatch("ruby:1234", &s, &i);
9825
9826         Example: does not try to extract any extra sub-patterns
9827            re.FullMatch("ruby:1234", &s);
9828
9829         Example: does not try to extract into NULL
9830            re.FullMatch("ruby:1234", NULL, &i);
9831
9832         Example: integer overflow causes failure
9833            !re.FullMatch("ruby:1234567891234", NULL, &i);
9834
9835         Example: fails because there aren't enough sub-patterns:
9836            !pcrecpp::RE("\\w+:\\d+").FullMatch("ruby:1234", &s);
9837
9838         Example: fails because string cannot be stored in integer
9839            !pcrecpp::RE("(.*)").FullMatch("ruby", &i);
9840
9841       The provided pointer arguments can be pointers to  any  scalar  numeric
9842       type, or one of:
9843
9844          string        (matched piece is copied to string)
9845          StringPiece   (StringPiece is mutated to point to matched piece)
9846          T             (where "bool T::ParseFrom(const char*, int)" exists)
9847          NULL          (the corresponding matched sub-pattern is not copied)
9848
9849       The  function returns true iff all of the following conditions are sat-
9850       isfied:
9851
9852         a. "text" matches "pattern" exactly;
9853
9854         b. The number of matched sub-patterns is >= number of supplied
9855            pointers;
9856
9857         c. The "i"th argument has a suitable type for holding the
9858            string captured as the "i"th sub-pattern. If you pass in
9859            void * NULL for the "i"th argument, or a non-void * NULL
9860            of the correct type, or pass fewer arguments than the
9861            number of sub-patterns, "i"th captured sub-pattern is
9862            ignored.
9863
9864       CAVEAT: An optional sub-pattern that does  not  exist  in  the  matched
9865       string  is  assigned  the  empty  string. Therefore, the following will
9866       return false (because the empty string is not a valid number):
9867
9868          int number;
9869          pcrecpp::RE::FullMatch("abc", "[a-z]+(\\d+)?", &number);
9870
9871       The matching interface supports at most 16 arguments per call.  If  you
9872       need    more,    consider    using    the    more   general   interface
9873       pcrecpp::RE::DoMatch. See pcrecpp.h for the signature for DoMatch.
9874
9875       NOTE: Do not use no_arg, which is used internally to mark the end of  a
9876       list  of optional arguments, as a placeholder for missing arguments, as
9877       this can lead to segfaults.
9878
9879
9880QUOTING METACHARACTERS
9881
9882       You can use the "QuoteMeta" operation to insert backslashes before  all
9883       potentially  meaningful  characters  in  a string. The returned string,
9884       used as a regular expression, will exactly match the original string.
9885
9886         Example:
9887            string quoted = RE::QuoteMeta(unquoted);
9888
9889       Note that it's legal to escape a character even if it  has  no  special
9890       meaning  in  a  regular expression -- so this function does that. (This
9891       also makes it identical to the perl function  of  the  same  name;  see
9892       "perldoc    -f    quotemeta".)    For   example,   "1.5-2.0?"   becomes
9893       "1\.5\-2\.0\?".
9894
9895
9896PARTIAL MATCHES
9897
9898       You can use the "PartialMatch" operation when you want the  pattern  to
9899       match any substring of the text.
9900
9901         Example: simple search for a string:
9902            pcrecpp::RE("ell").PartialMatch("hello");
9903
9904         Example: find first number in a string:
9905            int number;
9906            pcrecpp::RE re("(\\d+)");
9907            re.PartialMatch("x*100 + 20", &number);
9908            assert(number == 100);
9909
9910
9911UTF-8 AND THE MATCHING INTERFACE
9912
9913       By  default,  pattern  and text are plain text, one byte per character.
9914       The UTF8 flag, passed to  the  constructor,  causes  both  pattern  and
9915       string to be treated as UTF-8 text, still a byte stream but potentially
9916       multiple bytes per character. In practice, the text is likelier  to  be
9917       UTF-8  than  the pattern, but the match returned may depend on the UTF8
9918       flag, so always use it when matching UTF8 text. For example,  "."  will
9919       match  one  byte normally but with UTF8 set may match up to three bytes
9920       of a multi-byte character.
9921
9922         Example:
9923            pcrecpp::RE_Options options;
9924            options.set_utf8();
9925            pcrecpp::RE re(utf8_pattern, options);
9926            re.FullMatch(utf8_string);
9927
9928         Example: using the convenience function UTF8():
9929            pcrecpp::RE re(utf8_pattern, pcrecpp::UTF8());
9930            re.FullMatch(utf8_string);
9931
9932       NOTE: The UTF8 flag is ignored if pcre was not configured with the
9933             --enable-utf8 flag.
9934
9935
9936PASSING MODIFIERS TO THE REGULAR EXPRESSION ENGINE
9937
9938       PCRE defines some modifiers to  change  the  behavior  of  the  regular
9939       expression   engine.  The  C++  wrapper  defines  an  auxiliary  class,
9940       RE_Options, as a vehicle to pass such modifiers to  a  RE  class.  Cur-
9941       rently, the following modifiers are supported:
9942
9943          modifier              description               Perl corresponding
9944
9945          PCRE_CASELESS         case insensitive match      /i
9946          PCRE_MULTILINE        multiple lines match        /m
9947          PCRE_DOTALL           dot matches newlines        /s
9948          PCRE_DOLLAR_ENDONLY   $ matches only at end       N/A
9949          PCRE_EXTRA            strict escape parsing       N/A
9950          PCRE_EXTENDED         ignore white spaces         /x
9951          PCRE_UTF8             handles UTF8 chars          built-in
9952          PCRE_UNGREEDY         reverses * and *?           N/A
9953          PCRE_NO_AUTO_CAPTURE  disables capturing parens   N/A (*)
9954
9955       (*)  Both Perl and PCRE allow non capturing parentheses by means of the
9956       "?:" modifier within the pattern itself. e.g. (?:ab|cd) does  not  cap-
9957       ture, while (ab|cd) does.
9958
9959       For  a  full  account on how each modifier works, please check the PCRE
9960       API reference page.
9961
9962       For each modifier, there are two member functions whose  name  is  made
9963       out  of  the  modifier  in  lowercase,  without the "PCRE_" prefix. For
9964       instance, PCRE_CASELESS is handled by
9965
9966         bool caseless()
9967
9968       which returns true if the modifier is set, and
9969
9970         RE_Options & set_caseless(bool)
9971
9972       which sets or unsets the modifier. Moreover, PCRE_EXTRA_MATCH_LIMIT can
9973       be  accessed  through  the  set_match_limit()  and match_limit() member
9974       functions. Setting match_limit to a non-zero value will limit the  exe-
9975       cution  of pcre to keep it from doing bad things like blowing the stack
9976       or taking an eternity to return a result.  A  value  of  5000  is  good
9977       enough  to stop stack blowup in a 2MB thread stack. Setting match_limit
9978       to  zero  disables  match  limiting.  Alternatively,   you   can   call
9979       match_limit_recursion()  which uses PCRE_EXTRA_MATCH_LIMIT_RECURSION to
9980       limit how much  PCRE  recurses.  match_limit()  limits  the  number  of
9981       matches PCRE does; match_limit_recursion() limits the depth of internal
9982       recursion, and therefore the amount of stack that is used.
9983
9984       Normally, to pass one or more modifiers to a RE class,  you  declare  a
9985       RE_Options object, set the appropriate options, and pass this object to
9986       a RE constructor. Example:
9987
9988          RE_Options opt;
9989          opt.set_caseless(true);
9990          if (RE("HELLO", opt).PartialMatch("hello world")) ...
9991
9992       RE_options has two constructors. The default constructor takes no argu-
9993       ments  and creates a set of flags that are off by default. The optional
9994       parameter option_flags is to facilitate transfer of legacy code from  C
9995       programs.  This lets you do
9996
9997          RE(pattern,
9998            RE_Options(PCRE_CASELESS|PCRE_MULTILINE)).PartialMatch(str);
9999
10000       However, new code is better off doing
10001
10002          RE(pattern,
10003            RE_Options().set_caseless(true).set_multiline(true))
10004              .PartialMatch(str);
10005
10006       If you are going to pass one of the most used modifiers, there are some
10007       convenience functions that return a RE_Options class with the appropri-
10008       ate  modifier  already  set: CASELESS(), UTF8(), MULTILINE(), DOTALL(),
10009       and EXTENDED().
10010
10011       If you need to set several options at once, and you don't  want  to  go
10012       through  the pains of declaring a RE_Options object and setting several
10013       options, there is a parallel method that give you such ability  on  the
10014       fly.  You  can  concatenate several set_xxxxx() member functions, since
10015       each of them returns a reference to its class object. For  example,  to
10016       pass  PCRE_CASELESS, PCRE_EXTENDED, and PCRE_MULTILINE to a RE with one
10017       statement, you may write:
10018
10019          RE(" ^ xyz \\s+ .* blah$",
10020            RE_Options()
10021              .set_caseless(true)
10022              .set_extended(true)
10023              .set_multiline(true)).PartialMatch(sometext);
10024
10025
10026SCANNING TEXT INCREMENTALLY
10027
10028       The "Consume" operation may be useful if you want to  repeatedly  match
10029       regular expressions at the front of a string and skip over them as they
10030       match. This requires use of the "StringPiece" type, which represents  a
10031       sub-range  of  a  real  string.  Like RE, StringPiece is defined in the
10032       pcrecpp namespace.
10033
10034         Example: read lines of the form "var = value" from a string.
10035            string contents = ...;                 // Fill string somehow
10036            pcrecpp::StringPiece input(contents);  // Wrap in a StringPiece
10037
10038            string var;
10039            int value;
10040            pcrecpp::RE re("(\\w+) = (\\d+)\n");
10041            while (re.Consume(&input, &var, &value)) {
10042              ...;
10043            }
10044
10045       Each successful call  to  "Consume"  will  set  "var/value",  and  also
10046       advance "input" so it points past the matched text.
10047
10048       The  "FindAndConsume"  operation  is  similar to "Consume" but does not
10049       anchor your match at the beginning of  the  string.  For  example,  you
10050       could extract all words from a string by repeatedly calling
10051
10052         pcrecpp::RE("(\\w+)").FindAndConsume(&input, &word)
10053
10054
10055PARSING HEX/OCTAL/C-RADIX NUMBERS
10056
10057       By default, if you pass a pointer to a numeric value, the corresponding
10058       text is interpreted as a base-10  number.  You  can  instead  wrap  the
10059       pointer with a call to one of the operators Hex(), Octal(), or CRadix()
10060       to interpret the text in another base. The CRadix  operator  interprets
10061       C-style  "0"  (base-8)  and  "0x"  (base-16)  prefixes, but defaults to
10062       base-10.
10063
10064         Example:
10065           int a, b, c, d;
10066           pcrecpp::RE re("(.*) (.*) (.*) (.*)");
10067           re.FullMatch("100 40 0100 0x40",
10068                        pcrecpp::Octal(&a), pcrecpp::Hex(&b),
10069                        pcrecpp::CRadix(&c), pcrecpp::CRadix(&d));
10070
10071       will leave 64 in a, b, c, and d.
10072
10073
10074REPLACING PARTS OF STRINGS
10075
10076       You can replace the first match of "pattern" in "str"  with  "rewrite".
10077       Within  "rewrite",  backslash-escaped  digits (\1 to \9) can be used to
10078       insert text matching corresponding parenthesized group  from  the  pat-
10079       tern. \0 in "rewrite" refers to the entire matching text. For example:
10080
10081         string s = "yabba dabba doo";
10082         pcrecpp::RE("b+").Replace("d", &s);
10083
10084       will  leave  "s" containing "yada dabba doo". The result is true if the
10085       pattern matches and a replacement occurs, false otherwise.
10086
10087       GlobalReplace is like Replace except that it replaces  all  occurrences
10088       of  the  pattern  in  the string with the rewrite. Replacements are not
10089       subject to re-matching. For example:
10090
10091         string s = "yabba dabba doo";
10092         pcrecpp::RE("b+").GlobalReplace("d", &s);
10093
10094       will leave "s" containing "yada dada doo". It  returns  the  number  of
10095       replacements made.
10096
10097       Extract  is like Replace, except that if the pattern matches, "rewrite"
10098       is copied into "out" (an additional argument) with substitutions.   The
10099       non-matching  portions  of "text" are ignored. Returns true iff a match
10100       occurred and the extraction happened successfully;  if no match occurs,
10101       the string is left unaffected.
10102
10103
10104AUTHOR
10105
10106       The C++ wrapper was contributed by Google Inc.
10107       Copyright (c) 2007 Google Inc.
10108
10109
10110REVISION
10111
10112       Last updated: 08 January 2012
10113------------------------------------------------------------------------------
10114
10115
10116PCRESAMPLE(3)              Library Functions Manual              PCRESAMPLE(3)
10117
10118
10119
10120NAME
10121       PCRE - Perl-compatible regular expressions
10122
10123PCRE SAMPLE PROGRAM
10124
10125       A simple, complete demonstration program, to get you started with using
10126       PCRE, is supplied in the file pcredemo.c in the  PCRE  distribution.  A
10127       listing  of this program is given in the pcredemo documentation. If you
10128       do not have a copy of the PCRE distribution, you can save this  listing
10129       to re-create pcredemo.c.
10130
10131       The  demonstration program, which uses the original PCRE 8-bit library,
10132       compiles the regular expression that is its first argument, and matches
10133       it  against  the subject string in its second argument. No PCRE options
10134       are set, and default character tables are used. If  matching  succeeds,
10135       the  program  outputs the portion of the subject that matched, together
10136       with the contents of any captured substrings.
10137
10138       If the -g option is given on the command line, the program then goes on
10139       to check for further matches of the same regular expression in the same
10140       subject string. The logic is a little bit tricky because of the  possi-
10141       bility  of  matching an empty string. Comments in the code explain what
10142       is going on.
10143
10144       If PCRE is installed in the standard include  and  library  directories
10145       for your operating system, you should be able to compile the demonstra-
10146       tion program using this command:
10147
10148         gcc -o pcredemo pcredemo.c -lpcre
10149
10150       If PCRE is installed elsewhere, you may need to add additional  options
10151       to  the  command line. For example, on a Unix-like system that has PCRE
10152       installed in /usr/local, you  can  compile  the  demonstration  program
10153       using a command like this:
10154
10155         gcc -o pcredemo -I/usr/local/include pcredemo.c \
10156             -L/usr/local/lib -lpcre
10157
10158       In  a  Windows  environment, if you want to statically link the program
10159       against a non-dll pcre.a file, you must uncomment the line that defines
10160       PCRE_STATIC  before  including  pcre.h, because otherwise the pcre_mal-
10161       loc()   and   pcre_free()   exported   functions   will   be   declared
10162       __declspec(dllimport), with unwanted results.
10163
10164       Once  you  have  compiled and linked the demonstration program, you can
10165       run simple tests like this:
10166
10167         ./pcredemo 'cat|dog' 'the cat sat on the mat'
10168         ./pcredemo -g 'cat|dog' 'the dog sat on the cat'
10169
10170       Note that there is a  much  more  comprehensive  test  program,  called
10171       pcretest,  which  supports  many  more  facilities  for testing regular
10172       expressions and both PCRE libraries. The pcredemo program  is  provided
10173       as a simple coding example.
10174
10175       If  you  try to run pcredemo when PCRE is not installed in the standard
10176       library directory, you may get an error like  this  on  some  operating
10177       systems (e.g. Solaris):
10178
10179         ld.so.1:  a.out:  fatal:  libpcre.so.0:  open failed: No such file or
10180       directory
10181
10182       This is caused by the way shared library support works  on  those  sys-
10183       tems. You need to add
10184
10185         -R/usr/local/lib
10186
10187       (for example) to the compile command to get round this problem.
10188
10189
10190AUTHOR
10191
10192       Philip Hazel
10193       University Computing Service
10194       Cambridge CB2 3QH, England.
10195
10196
10197REVISION
10198
10199       Last updated: 10 January 2012
10200       Copyright (c) 1997-2012 University of Cambridge.
10201------------------------------------------------------------------------------
10202PCRELIMITS(3)              Library Functions Manual              PCRELIMITS(3)
10203
10204
10205
10206NAME
10207       PCRE - Perl-compatible regular expressions
10208
10209SIZE AND OTHER LIMITATIONS
10210
10211       There  are some size limitations in PCRE but it is hoped that they will
10212       never in practice be relevant.
10213
10214       The maximum length of a compiled  pattern  is  approximately  64K  data
10215       units  (bytes  for  the  8-bit  library,  16-bit  units  for the 16-bit
10216       library, and 32-bit units for the 32-bit library) if PCRE  is  compiled
10217       with  the default internal linkage size, which is 2 bytes for the 8-bit
10218       and 16-bit libraries, and 4 bytes for the 32-bit library. If  you  want
10219       to process regular expressions that are truly enormous, you can compile
10220       PCRE with an internal linkage size of 3 or 4 (when building the  16-bit
10221       or  32-bit  library,  3 is rounded up to 4). See the README file in the
10222       source distribution and the pcrebuild  documentation  for  details.  In
10223       these  cases  the limit is substantially larger.  However, the speed of
10224       execution is slower.
10225
10226       All values in repeating quantifiers must be less than 65536.
10227
10228       There is no limit to the number of parenthesized subpatterns, but there
10229       can  be  no more than 65535 capturing subpatterns. There is, however, a
10230       limit to the depth of  nesting  of  parenthesized  subpatterns  of  all
10231       kinds.  This  is  imposed  in order to limit the amount of system stack
10232       used at compile time. The limit can be specified when  PCRE  is  built;
10233       the default is 250.
10234
10235       There is a limit to the number of forward references to subsequent sub-
10236       patterns of around 200,000.  Repeated  forward  references  with  fixed
10237       upper  limits,  for example, (?2){0,100} when subpattern number 2 is to
10238       the right, are included in the count. There is no limit to  the  number
10239       of backward references.
10240
10241       The maximum length of name for a named subpattern is 32 characters, and
10242       the maximum number of named subpatterns is 10000.
10243
10244       The maximum length of a  name  in  a  (*MARK),  (*PRUNE),  (*SKIP),  or
10245       (*THEN)  verb is 255 for the 8-bit library and 65535 for the 16-bit and
10246       32-bit libraries.
10247
10248       The maximum length of a subject string is the largest  positive  number
10249       that  an integer variable can hold. However, when using the traditional
10250       matching function, PCRE uses recursion to handle subpatterns and indef-
10251       inite  repetition.  This means that the available stack space may limit
10252       the size of a subject string that can be processed by certain patterns.
10253       For a discussion of stack issues, see the pcrestack documentation.
10254
10255
10256AUTHOR
10257
10258       Philip Hazel
10259       University Computing Service
10260       Cambridge CB2 3QH, England.
10261
10262
10263REVISION
10264
10265       Last updated: 05 November 2013
10266       Copyright (c) 1997-2013 University of Cambridge.
10267------------------------------------------------------------------------------
10268
10269
10270PCRESTACK(3)               Library Functions Manual               PCRESTACK(3)
10271
10272
10273
10274NAME
10275       PCRE - Perl-compatible regular expressions
10276
10277PCRE DISCUSSION OF STACK USAGE
10278
10279       When  you call pcre[16|32]_exec(), it makes use of an internal function
10280       called match(). This calls itself recursively at branch points  in  the
10281       pattern,  in  order  to  remember the state of the match so that it can
10282       back up and try a different alternative if  the  first  one  fails.  As
10283       matching proceeds deeper and deeper into the tree of possibilities, the
10284       recursion depth increases. The match() function is also called in other
10285       circumstances,  for  example,  whenever  a parenthesized sub-pattern is
10286       entered, and in certain cases of repetition.
10287
10288       Not all calls of match() increase the recursion depth; for an item such
10289       as  a* it may be called several times at the same level, after matching
10290       different numbers of a's. Furthermore, in a number of cases  where  the
10291       result  of  the  recursive call would immediately be passed back as the
10292       result of the current call (a "tail recursion"), the function  is  just
10293       restarted instead.
10294
10295       The  above  comments apply when pcre[16|32]_exec() is run in its normal
10296       interpretive  manner.   If   the   pattern   was   studied   with   the
10297       PCRE_STUDY_JIT_COMPILE  option, and just-in-time compiling was success-
10298       ful, and the options passed to pcre[16|32]_exec() were  not  incompati-
10299       ble,  the  matching  process  uses the JIT-compiled code instead of the
10300       match() function. In this case, the  memory  requirements  are  handled
10301       entirely differently. See the pcrejit documentation for details.
10302
10303       The  pcre[16|32]_dfa_exec()  function operates in an entirely different
10304       way, and uses recursion only when there is a regular expression  recur-
10305       sion or subroutine call in the pattern. This includes the processing of
10306       assertion and "once-only" subpatterns, which are handled  like  subrou-
10307       tine  calls.  Normally, these are never very deep, and the limit on the
10308       complexity of pcre[16|32]_dfa_exec() is controlled  by  the  amount  of
10309       workspace  it is given.  However, it is possible to write patterns with
10310       runaway    infinite    recursions;    such    patterns    will    cause
10311       pcre[16|32]_dfa_exec()  to  run  out  of stack. At present, there is no
10312       protection against this.
10313
10314       The comments that follow do NOT apply to  pcre[16|32]_dfa_exec();  they
10315       are relevant only for pcre[16|32]_exec() without the JIT optimization.
10316
10317   Reducing pcre[16|32]_exec()'s stack usage
10318
10319       Each  time  that match() is actually called recursively, it uses memory
10320       from the process stack. For certain kinds of  pattern  and  data,  very
10321       large  amounts of stack may be needed, despite the recognition of "tail
10322       recursion".  You can often reduce the amount of recursion,  and  there-
10323       fore  the  amount of stack used, by modifying the pattern that is being
10324       matched. Consider, for example, this pattern:
10325
10326         ([^<]|<(?!inet))+
10327
10328       It matches from wherever it starts until it encounters "<inet"  or  the
10329       end  of  the  data,  and is the kind of pattern that might be used when
10330       processing an XML file. Each iteration of the outer parentheses matches
10331       either  one  character that is not "<" or a "<" that is not followed by
10332       "inet". However, each time a  parenthesis  is  processed,  a  recursion
10333       occurs, so this formulation uses a stack frame for each matched charac-
10334       ter. For a long string, a lot of stack is required. Consider  now  this
10335       rewritten pattern, which matches exactly the same strings:
10336
10337         ([^<]++|<(?!inet))+
10338
10339       This  uses very much less stack, because runs of characters that do not
10340       contain "<" are "swallowed" in one item inside the parentheses.  Recur-
10341       sion  happens  only when a "<" character that is not followed by "inet"
10342       is encountered (and we assume this is relatively  rare).  A  possessive
10343       quantifier  is  used  to stop any backtracking into the runs of non-"<"
10344       characters, but that is not related to stack usage.
10345
10346       This example shows that one way of avoiding stack problems when  match-
10347       ing long subject strings is to write repeated parenthesized subpatterns
10348       to match more than one character whenever possible.
10349
10350   Compiling PCRE to use heap instead of stack for pcre[16|32]_exec()
10351
10352       In environments where stack memory is constrained, you  might  want  to
10353       compile  PCRE to use heap memory instead of stack for remembering back-
10354       up points when pcre[16|32]_exec() is running. This makes it run  a  lot
10355       more slowly, however.  Details of how to do this are given in the pcre-
10356       build documentation. When built in  this  way,  instead  of  using  the
10357       stack,  PCRE obtains and frees memory by calling the functions that are
10358       pointed to by the pcre[16|32]_stack_malloc  and  pcre[16|32]_stack_free
10359       variables.  By default, these point to malloc() and free(), but you can
10360       replace the pointers to cause PCRE to use your own functions. Since the
10361       block sizes are always the same, and are always freed in reverse order,
10362       it may be possible to implement customized  memory  handlers  that  are
10363       more efficient than the standard functions.
10364
10365   Limiting pcre[16|32]_exec()'s stack usage
10366
10367       You  can set limits on the number of times that match() is called, both
10368       in total and recursively. If a limit  is  exceeded,  pcre[16|32]_exec()
10369       returns  an  error code. Setting suitable limits should prevent it from
10370       running out of stack. The default values of the limits are very  large,
10371       and  unlikely  ever to operate. They can be changed when PCRE is built,
10372       and they can also be set when pcre[16|32]_exec() is called. For details
10373       of these interfaces, see the pcrebuild documentation and the section on
10374       extra data for pcre[16|32]_exec() in the pcreapi documentation.
10375
10376       As a very rough rule of thumb, you should reckon on about 500 bytes per
10377       recursion.  Thus,  if  you  want  to limit your stack usage to 8Mb, you
10378       should set the limit at 16000 recursions. A 64Mb stack,  on  the  other
10379       hand, can support around 128000 recursions.
10380
10381       In Unix-like environments, the pcretest test program has a command line
10382       option (-S) that can be used to increase the size of its stack. As long
10383       as  the  stack is large enough, another option (-M) can be used to find
10384       the smallest limits that allow a particular pattern to  match  a  given
10385       subject  string.  This is done by calling pcre[16|32]_exec() repeatedly
10386       with different limits.
10387
10388   Obtaining an estimate of stack usage
10389
10390       The actual amount of stack used per recursion can  vary  quite  a  lot,
10391       depending on the compiler that was used to build PCRE and the optimiza-
10392       tion or debugging options that were set for it. The rule of thumb value
10393       of  500  bytes  mentioned  above  may be larger or smaller than what is
10394       actually needed. A better approximation can be obtained by running this
10395       command:
10396
10397         pcretest -m -C
10398
10399       The  -C  option causes pcretest to output information about the options
10400       with which PCRE was compiled. When -m is also given (before -C), infor-
10401       mation about stack use is given in a line like this:
10402
10403         Match recursion uses stack: approximate frame size = 640 bytes
10404
10405       The value is approximate because some recursions need a bit more (up to
10406       perhaps 16 more bytes).
10407
10408       If the above command is given when PCRE is compiled  to  use  the  heap
10409       instead  of  the  stack  for recursion, the value that is output is the
10410       size of each block that is obtained from the heap.
10411
10412   Changing stack size in Unix-like systems
10413
10414       In Unix-like environments, there is not often a problem with the  stack
10415       unless  very  long  strings  are  involved, though the default limit on
10416       stack size varies from system to system. Values from 8Mb  to  64Mb  are
10417       common. You can find your default limit by running the command:
10418
10419         ulimit -s
10420
10421       Unfortunately,  the  effect  of  running out of stack is often SIGSEGV,
10422       though sometimes a more explicit error message is given. You  can  nor-
10423       mally increase the limit on stack size by code such as this:
10424
10425         struct rlimit rlim;
10426         getrlimit(RLIMIT_STACK, &rlim);
10427         rlim.rlim_cur = 100*1024*1024;
10428         setrlimit(RLIMIT_STACK, &rlim);
10429
10430       This  reads  the current limits (soft and hard) using getrlimit(), then
10431       attempts to increase the soft limit to  100Mb  using  setrlimit().  You
10432       must do this before calling pcre[16|32]_exec().
10433
10434   Changing stack size in Mac OS X
10435
10436       Using setrlimit(), as described above, should also work on Mac OS X. It
10437       is also possible to set a stack size when linking a program. There is a
10438       discussion   about   stack  sizes  in  Mac  OS  X  at  this  web  site:
10439       http://developer.apple.com/qa/qa2005/qa1419.html.
10440
10441
10442AUTHOR
10443
10444       Philip Hazel
10445       University Computing Service
10446       Cambridge CB2 3QH, England.
10447
10448
10449REVISION
10450
10451       Last updated: 24 June 2012
10452       Copyright (c) 1997-2012 University of Cambridge.
10453------------------------------------------------------------------------------
10454
10455
10456