| 
version 1.1.1.2, 2012/02/21 23:50:25
 | 
version 1.1.1.5, 2014/06/15 19:46:05
 | 
| 
 Line 1
 | 
 Line 1
 | 
| .TH PCRETEST 1 | .TH PCRETEST 1 "12 November 2013" "PCRE 8.34" | 
 |  .SH NAME | 
  .SH NAME | 
 |  pcretest - a program for testing Perl-compatible regular expressions. | 
  pcretest - a program for testing Perl-compatible regular expressions. | 
 |  .SH SYNOPSIS | 
  .SH SYNOPSIS | 
| 
 Line 18  options, see the
 | 
 Line 18  options, see the
 | 
 |  .\" HREF | 
  .\" HREF | 
 |  \fBpcreapi\fP | 
  \fBpcreapi\fP | 
 |  .\" | 
  .\" | 
| and | , | 
 |  .\" HREF | 
  .\" HREF | 
 |  \fBpcre16\fP | 
  \fBpcre16\fP | 
 |   | 
  and | 
 |   | 
  .\" HREF | 
 |   | 
  \fBpcre32\fP | 
 |  .\" | 
  .\" | 
| documentation. The input for \fBpcretest\fP is a sequence of regular expression | documentation. | 
| patterns and strings to be matched, as described below. The output shows the | .P | 
| result of each match. Options on the command line and the patterns control PCRE | The input for \fBpcretest\fP is a sequence of regular expression patterns and | 
| options and exactly what is output. | strings to be matched, as described below. The output shows the result of each | 
|   | match. Options on the command line and the patterns control PCRE options and | 
|   | exactly what is output. | 
|   | .P | 
|   | As PCRE has evolved, it has acquired many different features, and as a result, | 
|   | \fBpcretest\fP now has rather a lot of obscure options for testing every | 
|   | possible feature. Some of these options are specifically designed for use in | 
|   | conjunction with the test script and data files that are distributed as part of | 
|   | PCRE, and are unlikely to be of use otherwise. They are all documented here, | 
|   | but without much justification. | 
 |  . | 
  . | 
 |  . | 
  . | 
| .SH "PCRE's 8-BIT and 16-BIT LIBRARIES" | .SH "INPUT DATA FORMAT" | 
 |  .rs | 
  .rs | 
 |  .sp | 
  .sp | 
 |   | 
  Input to \fBpcretest\fP is processed line by line, either by calling the C | 
 |   | 
  library's \fBfgets()\fP function, or via the \fBlibreadline\fP library (see | 
 |   | 
  below). In Unix-like environments, \fBfgets()\fP treats any bytes other than | 
 |   | 
  newline as data characters. However, in some Windows environments character 26 | 
 |   | 
  (hex 1A) causes an immediate end of file, and no further data is read. For | 
 |   | 
  maximum portability, therefore, it is safest to use only ASCII characters in | 
 |   | 
  \fBpcretest\fP input files. | 
 |   | 
  . | 
 |   | 
  . | 
 |   | 
  .SH "PCRE's 8-BIT, 16-BIT AND 32-BIT LIBRARIES" | 
 |   | 
  .rs | 
 |   | 
  .sp | 
 |  From release 8.30, two separate PCRE libraries can be built. The original one | 
  From release 8.30, two separate PCRE libraries can be built. The original one | 
 |  supports 8-bit character strings, whereas the newer 16-bit library supports | 
  supports 8-bit character strings, whereas the newer 16-bit library supports | 
| character strings encoded in 16-bit units. The \fBpcretest\fP program can be | character strings encoded in 16-bit units. From release 8.32, a third library | 
| used to test both libraries. However, it is itself still an 8-bit program, | can be built, supporting character strings encoded in 32-bit units. The | 
| reading 8-bit input and writing 8-bit output. When testing the 16-bit library, | \fBpcretest\fP program can be used to test all three libraries. However, it is | 
| the patterns and data strings are converted to 16-bit format before being | itself still an 8-bit program, reading 8-bit input and writing 8-bit output. | 
| passed to the PCRE library functions. Results are converted to 8-bit for | When testing the 16-bit or 32-bit library, the patterns and data strings are | 
| output. | converted to 16- or 32-bit format before being passed to the PCRE library | 
|   | functions. Results are converted to 8-bit for output. | 
 |  .P | 
  .P | 
| References to functions and structures of the form \fBpcre[16]_xx\fP below | References to functions and structures of the form \fBpcre[16|32]_xx\fP below | 
| mean "\fBpcre_xx\fP when using the 8-bit library or \fBpcre16_xx\fP when using | mean "\fBpcre_xx\fP when using the 8-bit library, \fBpcre16_xx\fP when using | 
| the 16-bit library". | the 16-bit library, or \fBpcre32_xx\fP when using the 32-bit library". | 
 |  . | 
  . | 
 |  . | 
  . | 
 |  .SH "COMMAND LINE OPTIONS" | 
  .SH "COMMAND LINE OPTIONS" | 
 |  .rs | 
  .rs | 
 |  .TP 10 | 
  .TP 10 | 
| \fB-16\fP | \fB-8\fP | 
| If both the 8-bit and the 16-bit libraries have been built, this option causes | If both the 8-bit library has been built, this option causes the 8-bit library | 
| the 16-bit library to be used. If only the 16-bit library has been built, this | to be used (which is the default); if the 8-bit library has not been built, | 
| is the default (so has no effect). If only the 8-bit library has been built, |   | 
 |  this option causes an error. | 
  this option causes an error. | 
 |  .TP 10 | 
  .TP 10 | 
 |   | 
  \fB-16\fP | 
 |   | 
  If both the 8-bit or the 32-bit, and the 16-bit libraries have been built, this | 
 |   | 
  option causes the 16-bit library to be used. If only the 16-bit library has been | 
 |   | 
  built, this is the default (so has no effect). If only the 8-bit or the 32-bit | 
 |   | 
  library has been built, this option causes an error. | 
 |   | 
  .TP 10 | 
 |   | 
  \fB-32\fP | 
 |   | 
  If both the 8-bit or the 16-bit, and the 32-bit libraries have been built, this | 
 |   | 
  option causes the 32-bit library to be used. If only the 32-bit library has been | 
 |   | 
  built, this is the default (so has no effect). If only the 8-bit or the 16-bit | 
 |   | 
  library has been built, this option causes an error. | 
 |   | 
  .TP 10 | 
 |  \fB-b\fP | 
  \fB-b\fP | 
 |  Behave as if each pattern has the \fB/B\fP (show byte code) modifier; the | 
  Behave as if each pattern has the \fB/B\fP (show byte code) modifier; the | 
 |  internal form is output after compilation. | 
  internal form is output after compilation. | 
 |  .TP 10 | 
  .TP 10 | 
 |  \fB-C\fP | 
  \fB-C\fP | 
 |  Output the version number of the PCRE library, and all available information | 
  Output the version number of the PCRE library, and all available information | 
| about the optional features that are included, and then exit. All other options | about the optional features that are included, and then exit with zero exit | 
| are ignored. | code. All other options are ignored. | 
 |  .TP 10 | 
  .TP 10 | 
 |  \fB-C\fP \fIoption\fP | 
  \fB-C\fP \fIoption\fP | 
 |  Output information about a specific build-time option, then exit. This | 
  Output information about a specific build-time option, then exit. This | 
 |  functionality is intended for use in scripts such as \fBRunTest\fP. The | 
  functionality is intended for use in scripts such as \fBRunTest\fP. The | 
| following options output the value indicated: | following options output the value and set the exit code as indicated: | 
 |  .sp | 
  .sp | 
|   linksize   the internal link size (2, 3, or 4) |   ebcdic-nl  the code for LF (= NL) in an EBCDIC environment: | 
|   |                0x15 or 0x25 | 
|   |                0 if used in an ASCII environment | 
|   |                exit code is always 0 | 
|   |   linksize   the configured internal link size (2, 3, or 4) | 
|   |                exit code is set to the link size | 
 |    newline    the default newline setting: | 
    newline    the default newline setting: | 
 |                 CR, LF, CRLF, ANYCRLF, or ANY | 
                 CR, LF, CRLF, ANYCRLF, or ANY | 
 |   | 
                 exit code is always 0 | 
 |  .sp | 
  .sp | 
| The following options output 1 for true or zero for false: | The following options output 1 for true or 0 for false, and set the exit code | 
|   | to the same value: | 
 |  .sp | 
  .sp | 
 |   | 
    ebcdic     compiled for an EBCDIC environment | 
 |    jit        just-in-time support is available | 
    jit        just-in-time support is available | 
 |    pcre16     the 16-bit library was built | 
    pcre16     the 16-bit library was built | 
 |   | 
    pcre32     the 32-bit library was built | 
 |    pcre8      the 8-bit library was built | 
    pcre8      the 8-bit library was built | 
 |    ucp        Unicode property support is available | 
    ucp        Unicode property support is available | 
|   utf        UTF-8 and/or UTF-16 support is available |   utf        UTF-8 and/or UTF-16 and/or UTF-32 support | 
|   |                is available | 
|   | .sp | 
|   | If an unknown option is given, an error message is output; the exit code is 0. | 
 |  .TP 10 | 
  .TP 10 | 
 |  \fB-d\fP | 
  \fB-d\fP | 
 |  Behave as if each pattern has the \fB/D\fP (debug) modifier; the internal | 
  Behave as if each pattern has the \fB/D\fP (debug) modifier; the internal | 
| 
 Line 87  form and information about the compiled pattern is out
 | 
 Line 135  form and information about the compiled pattern is out
 | 
 |  .TP 10 | 
  .TP 10 | 
 |  \fB-dfa\fP | 
  \fB-dfa\fP | 
 |  Behave as if each data line contains the \eD escape sequence; this causes the | 
  Behave as if each data line contains the \eD escape sequence; this causes the | 
| alternative matching function, \fBpcre[16]_dfa_exec()\fP, to be used instead of | alternative matching function, \fBpcre[16|32]_dfa_exec()\fP, to be used instead | 
| the standard \fBpcre[16]_exec()\fP function (more detail is given below). | of the standard \fBpcre[16|32]_exec()\fP function (more detail is given below). | 
 |  .TP 10 | 
  .TP 10 | 
 |  \fB-help\fP | 
  \fB-help\fP | 
 |  Output a brief summary these options and then exit. | 
  Output a brief summary these options and then exit. | 
| 
 Line 100  compiled pattern is given after compilation.
 | 
 Line 148  compiled pattern is given after compilation.
 | 
 |  \fB-M\fP | 
  \fB-M\fP | 
 |  Behave as if each data line contains the \eM escape sequence; this causes | 
  Behave as if each data line contains the \eM escape sequence; this causes | 
 |  PCRE to discover the minimum MATCH_LIMIT and MATCH_LIMIT_RECURSION settings by | 
  PCRE to discover the minimum MATCH_LIMIT and MATCH_LIMIT_RECURSION settings by | 
| calling \fBpcre[16]_exec()\fP repeatedly with different limits. | calling \fBpcre[16|32]_exec()\fP repeatedly with different limits. | 
 |  .TP 10 | 
  .TP 10 | 
 |  \fB-m\fP | 
  \fB-m\fP | 
 |  Output the size of each compiled pattern after it has been compiled. This is | 
  Output the size of each compiled pattern after it has been compiled. This is | 
 |  equivalent to adding \fB/M\fP to each regular expression. The size is given in | 
  equivalent to adding \fB/M\fP to each regular expression. The size is given in | 
 |  bytes for both libraries. | 
  bytes for both libraries. | 
 |  .TP 10 | 
  .TP 10 | 
 |   | 
  \fB-O\fP | 
 |   | 
  Behave as if each pattern has the \fB/O\fP modifier, that is disable | 
 |   | 
  auto-possessification for all patterns. | 
 |   | 
  .TP 10 | 
 |  \fB-o\fP \fIosize\fP | 
  \fB-o\fP \fIosize\fP | 
 |  Set the number of elements in the output vector that is used when calling | 
  Set the number of elements in the output vector that is used when calling | 
| \fBpcre[16]_exec()\fP or \fBpcre[16]_dfa_exec()\fP to be \fIosize\fP. The | \fBpcre[16|32]_exec()\fP or \fBpcre[16|32]_dfa_exec()\fP to be \fIosize\fP. The | 
 |  default value is 45, which is enough for 14 capturing subexpressions for | 
  default value is 45, which is enough for 14 capturing subexpressions for | 
| \fBpcre[16]_exec()\fP or 22 different matches for \fBpcre[16]_dfa_exec()\fP. | \fBpcre[16|32]_exec()\fP or 22 different matches for | 
|   | \fBpcre[16|32]_dfa_exec()\fP. | 
 |  The vector size can be changed for individual matching calls by including \eO | 
  The vector size can be changed for individual matching calls by including \eO | 
 |  in the data line (see below). | 
  in the data line (see below). | 
 |  .TP 10 | 
  .TP 10 | 
| 
 Line 129  megabytes.
 | 
 Line 182  megabytes.
 | 
 |  .TP 10 | 
  .TP 10 | 
 |  \fB-s\fP or \fB-s+\fP | 
  \fB-s\fP or \fB-s+\fP | 
 |  Behave as if each pattern has the \fB/S\fP modifier; in other words, force each | 
  Behave as if each pattern has the \fB/S\fP modifier; in other words, force each | 
| pattern to be studied. If \fB-s+\fP is used, the PCRE_STUDY_JIT_COMPILE flag is | pattern to be studied. If \fB-s+\fP is used, all the JIT compile options are | 
| passed to \fBpcre[16]_study()\fP, causing just-in-time optimization to be set | passed to \fBpcre[16|32]_study()\fP, causing just-in-time optimization to be set | 
| up if it is available. If the \fB/I\fP or \fB/D\fP option is present on a | up if it is available, for both full and partial matching. Specific JIT compile | 
| pattern (requesting output about the compiled pattern), information about the | options can be selected by following \fB-s+\fP with a digit in the range 1 to | 
| result of studying is not included when studying is caused only by \fB-s\fP and | 7, which selects the JIT compile modes as follows: | 
| neither \fB-i\fP nor \fB-d\fP is present on the command line. This behaviour |   | 
| means that the output from tests that are run with and without \fB-s\fP should |   | 
| be identical, except when options that output information about the actual |   | 
| running of a match are set. |   | 
 |  .sp | 
  .sp | 
 |   | 
    1  normal match only | 
 |   | 
    2  soft partial match only | 
 |   | 
    3  normal match and soft partial match | 
 |   | 
    4  hard partial match only | 
 |   | 
    6  soft and hard partial match | 
 |   | 
    7  all three modes (default) | 
 |   | 
  .sp | 
 |   | 
  If \fB-s++\fP is used instead of \fB-s+\fP (with or without a following digit), | 
 |   | 
  the text "(JIT)" is added to the first output line after a match or no match | 
 |   | 
  when JIT-compiled code was actually used. | 
 |   | 
  .sp | 
 |   | 
  Note that there are pattern options that can override \fB-s\fP, either | 
 |   | 
  specifying no studying at all, or suppressing JIT compilation. | 
 |   | 
  .sp | 
 |   | 
  If the \fB/I\fP or \fB/D\fP option is present on a pattern (requesting output | 
 |   | 
  about the compiled pattern), information about the result of studying is not | 
 |   | 
  included when studying is caused only by \fB-s\fP and neither \fB-i\fP nor | 
 |   | 
  \fB-d\fP is present on the command line. This behaviour means that the output | 
 |   | 
  from tests that are run with and without \fB-s\fP should be identical, except | 
 |   | 
  when options that output information about the actual running of a match are | 
 |   | 
  set. | 
 |   | 
  .sp | 
 |  The \fB-M\fP, \fB-t\fP, and \fB-tm\fP options, which give information about | 
  The \fB-M\fP, \fB-t\fP, and \fB-tm\fP options, which give information about | 
 |  resources used, are likely to produce different output with and without | 
  resources used, are likely to produce different output with and without | 
 |  \fB-s\fP. Output may also differ if the \fB/C\fP option is present on an | 
  \fB-s\fP. Output may also differ if the \fB/C\fP option is present on an | 
| 
 Line 149  contains (*MARK) items there may also be differences, 
 | 
 Line 220  contains (*MARK) items there may also be differences, 
 | 
 |  should never be studied (see the \fB/S\fP pattern modifier below). | 
  should never be studied (see the \fB/S\fP pattern modifier below). | 
 |  .TP 10 | 
  .TP 10 | 
 |  \fB-t\fP | 
  \fB-t\fP | 
| Run each compile, study, and match many times with a timer, and output | Run each compile, study, and match many times with a timer, and output the | 
| resulting time per compile or match (in milliseconds). Do not set \fB-m\fP with | resulting times per compile, study, or match (in milliseconds). Do not set | 
| \fB-t\fP, because you will then get the size output a zillion times, and the | \fB-m\fP with \fB-t\fP, because you will then get the size output a zillion | 
| timing will be distorted. You can control the number of iterations that are | times, and the timing will be distorted. You can control the number of | 
| used for timing by following \fB-t\fP with a number (as a separate item on the | iterations that are used for timing by following \fB-t\fP with a number (as a | 
| command line). For example, "-t 1000" would iterate 1000 times. The default is | separate item on the command line). For example, "-t 1000" iterates 1000 times. | 
| to iterate 500000 times. | The default is to iterate 500000 times. | 
 |  .TP 10 | 
  .TP 10 | 
 |  \fB-tm\fP | 
  \fB-tm\fP | 
 |  This is like \fB-t\fP except that it times only the matching phase, not the | 
  This is like \fB-t\fP except that it times only the matching phase, not the | 
 |  compile or study phases. | 
  compile or study phases. | 
 |   | 
  .TP 10 | 
 |   | 
  \fB-T\fP \fB-TM\fP | 
 |   | 
  These behave like \fB-t\fP and \fB-tm\fP, but in addition, at the end of a run, | 
 |   | 
  the total times for all compiles, studies, and matches are output. | 
 |  . | 
  . | 
 |  . | 
  . | 
 |  .SH DESCRIPTION | 
  .SH DESCRIPTION | 
| 
 Line 179  option states whether or not \fBreadline()\fP will be 
 | 
 Line 254  option states whether or not \fBreadline()\fP will be 
 | 
 |  .P | 
  .P | 
 |  The program handles any number of sets of input on a single input file. Each | 
  The program handles any number of sets of input on a single input file. Each | 
 |  set starts with a regular expression, and continues with any number of data | 
  set starts with a regular expression, and continues with any number of data | 
| lines to be matched against the pattern. | lines to be matched against that pattern. | 
 |  .P | 
  .P | 
 |  Each data line is matched separately and independently. If you want to do | 
  Each data line is matched separately and independently. If you want to do | 
 |  multi-line matches, you have to use the \en escape sequence (or \er or \er\en, | 
  multi-line matches, you have to use the \en escape sequence (or \er or \er\en, | 
| 
 Line 221  pcretest to read the next line as a continuation of th
 | 
 Line 296  pcretest to read the next line as a continuation of th
 | 
 |  .rs | 
  .rs | 
 |  .sp | 
  .sp | 
 |  A pattern may be followed by any number of modifiers, which are mostly single | 
  A pattern may be followed by any number of modifiers, which are mostly single | 
| characters. Following Perl usage, these are referred to below as, for example, | characters, though some of these can be qualified by further characters. | 
| "the \fB/i\fP modifier", even though the delimiter of the pattern need not | Following Perl usage, these are referred to below as, for example, "the | 
| always be a slash, and no slash is used when writing modifiers. White space may | \fB/i\fP modifier", even though the delimiter of the pattern need not always be | 
| appear between the final pattern delimiter and the first modifier, and between | a slash, and no slash is used when writing modifiers. White space may appear | 
| the modifiers themselves. | between the final pattern delimiter and the first modifier, and between the | 
| .P | modifiers themselves. For reference, here is a complete list of modifiers. They | 
|   | fall into several groups that are described in detail in the following | 
|   | sections. | 
|   | .sp | 
|   |   \fB/8\fP              set UTF mode | 
|   |   \fB/9\fP              set PCRE_NEVER_UTF (locks out UTF mode) | 
|   |   \fB/?\fP              disable UTF validity check | 
|   |   \fB/+\fP              show remainder of subject after match | 
|   |   \fB/=\fP              show all captures (not just those that are set) | 
|   | .sp | 
|   |   \fB/A\fP              set PCRE_ANCHORED | 
|   |   \fB/B\fP              show compiled code | 
|   |   \fB/C\fP              set PCRE_AUTO_CALLOUT | 
|   |   \fB/D\fP              same as \fB/B\fP plus \fB/I\fP | 
|   |   \fB/E\fP              set PCRE_DOLLAR_ENDONLY | 
|   |   \fB/F\fP              flip byte order in compiled pattern | 
|   |   \fB/f\fP              set PCRE_FIRSTLINE | 
|   |   \fB/G\fP              find all matches (shorten string) | 
|   |   \fB/g\fP              find all matches (use startoffset) | 
|   |   \fB/I\fP              show information about pattern | 
|   |   \fB/i\fP              set PCRE_CASELESS | 
|   |   \fB/J\fP              set PCRE_DUPNAMES | 
|   |   \fB/K\fP              show backtracking control names | 
|   |   \fB/L\fP              set locale | 
|   |   \fB/M\fP              show compiled memory size | 
|   |   \fB/m\fP              set PCRE_MULTILINE | 
|   |   \fB/N\fP              set PCRE_NO_AUTO_CAPTURE | 
|   |   \fB/O\fP              set PCRE_NO_AUTO_POSSESS | 
|   |   \fB/P\fP              use the POSIX wrapper | 
|   |   \fB/S\fP              study the pattern after compilation | 
|   |   \fB/s\fP              set PCRE_DOTALL | 
|   |   \fB/T\fP              select character tables | 
|   |   \fB/U\fP              set PCRE_UNGREEDY | 
|   |   \fB/W\fP              set PCRE_UCP | 
|   |   \fB/X\fP              set PCRE_EXTRA | 
|   |   \fB/x\fP              set PCRE_EXTENDED | 
|   |   \fB/Y\fP              set PCRE_NO_START_OPTIMIZE | 
|   |   \fB/Z\fP              don't show lengths in \fB/B\fP output | 
|   | .sp | 
|   |   \fB/<any>\fP          set PCRE_NEWLINE_ANY | 
|   |   \fB/<anycrlf>\fP      set PCRE_NEWLINE_ANYCRLF | 
|   |   \fB/<cr>\fP           set PCRE_NEWLINE_CR | 
|   |   \fB/<crlf>\fP         set PCRE_NEWLINE_CRLF | 
|   |   \fB/<lf>\fP           set PCRE_NEWLINE_LF | 
|   |   \fB/<bsr_anycrlf>\fP  set PCRE_BSR_ANYCRLF | 
|   |   \fB/<bsr_unicode>\fP  set PCRE_BSR_UNICODE | 
|   |   \fB/<JS>\fP           set PCRE_JAVASCRIPT_COMPAT | 
|   | .sp | 
|   | . | 
|   | . | 
|   | .SS "Perl-compatible modifiers" | 
|   | .rs | 
|   | .sp | 
 |  The \fB/i\fP, \fB/m\fP, \fB/s\fP, and \fB/x\fP modifiers set the PCRE_CASELESS, | 
  The \fB/i\fP, \fB/m\fP, \fB/s\fP, and \fB/x\fP modifiers set the PCRE_CASELESS, | 
 |  PCRE_MULTILINE, PCRE_DOTALL, or PCRE_EXTENDED options, respectively, when | 
  PCRE_MULTILINE, PCRE_DOTALL, or PCRE_EXTENDED options, respectively, when | 
| \fBpcre[16]_compile()\fP is called. These four modifier letters have the same | \fBpcre[16|32]_compile()\fP is called. These four modifier letters have the same | 
 |  effect as they do in Perl. For example: | 
  effect as they do in Perl. For example: | 
 |  .sp | 
  .sp | 
 |    /caseless/i | 
    /caseless/i | 
 |  .sp | 
  .sp | 
 |   | 
  . | 
 |   | 
  . | 
 |   | 
  .SS "Modifiers for other PCRE options" | 
 |   | 
  .rs | 
 |   | 
  .sp | 
 |  The following table shows additional modifiers for setting PCRE compile-time | 
  The following table shows additional modifiers for setting PCRE compile-time | 
 |  options that do not correspond to anything in Perl: | 
  options that do not correspond to anything in Perl: | 
 |  .sp | 
  .sp | 
| 
 Line 243  options that do not correspond to anything in Perl:
 | 
 Line 375  options that do not correspond to anything in Perl:
 | 
 |    \fB/8\fP              PCRE_UTF16          ) when using the 16-bit | 
    \fB/8\fP              PCRE_UTF16          ) when using the 16-bit | 
 |    \fB/?\fP              PCRE_NO_UTF16_CHECK )   library | 
    \fB/?\fP              PCRE_NO_UTF16_CHECK )   library | 
 |  .sp | 
  .sp | 
 |   | 
    \fB/8\fP              PCRE_UTF32          ) when using the 32-bit | 
 |   | 
    \fB/?\fP              PCRE_NO_UTF32_CHECK )   library | 
 |   | 
  .sp | 
 |   | 
    \fB/9\fP              PCRE_NEVER_UTF | 
 |    \fB/A\fP              PCRE_ANCHORED | 
    \fB/A\fP              PCRE_ANCHORED | 
 |    \fB/C\fP              PCRE_AUTO_CALLOUT | 
    \fB/C\fP              PCRE_AUTO_CALLOUT | 
 |    \fB/E\fP              PCRE_DOLLAR_ENDONLY | 
    \fB/E\fP              PCRE_DOLLAR_ENDONLY | 
 |    \fB/f\fP              PCRE_FIRSTLINE | 
    \fB/f\fP              PCRE_FIRSTLINE | 
 |    \fB/J\fP              PCRE_DUPNAMES | 
    \fB/J\fP              PCRE_DUPNAMES | 
 |    \fB/N\fP              PCRE_NO_AUTO_CAPTURE | 
    \fB/N\fP              PCRE_NO_AUTO_CAPTURE | 
 |   | 
    \fB/O\fP              PCRE_NO_AUTO_POSSESS | 
 |    \fB/U\fP              PCRE_UNGREEDY | 
    \fB/U\fP              PCRE_UNGREEDY | 
 |    \fB/W\fP              PCRE_UCP | 
    \fB/W\fP              PCRE_UCP | 
 |    \fB/X\fP              PCRE_EXTRA | 
    \fB/X\fP              PCRE_EXTRA | 
 |    \fB/Y\fP              PCRE_NO_START_OPTIMIZE | 
    \fB/Y\fP              PCRE_NO_START_OPTIMIZE | 
|   \fB/<JS>\fP           PCRE_JAVASCRIPT_COMPAT |   \fB/<any>\fP          PCRE_NEWLINE_ANY | 
|   |   \fB/<anycrlf>\fP      PCRE_NEWLINE_ANYCRLF | 
 |    \fB/<cr>\fP           PCRE_NEWLINE_CR | 
    \fB/<cr>\fP           PCRE_NEWLINE_CR | 
 |    \fB/<lf>\fP           PCRE_NEWLINE_LF | 
   | 
 |    \fB/<crlf>\fP         PCRE_NEWLINE_CRLF | 
    \fB/<crlf>\fP         PCRE_NEWLINE_CRLF | 
|   \fB/<anycrlf>\fP      PCRE_NEWLINE_ANYCRLF |   \fB/<lf>\fP           PCRE_NEWLINE_LF | 
|   \fB/<any>\fP          PCRE_NEWLINE_ANY |   | 
 |    \fB/<bsr_anycrlf>\fP  PCRE_BSR_ANYCRLF | 
    \fB/<bsr_anycrlf>\fP  PCRE_BSR_ANYCRLF | 
 |    \fB/<bsr_unicode>\fP  PCRE_BSR_UNICODE | 
    \fB/<bsr_unicode>\fP  PCRE_BSR_UNICODE | 
 |   | 
    \fB/<JS>\fP           PCRE_JAVASCRIPT_COMPAT | 
 |  .sp | 
  .sp | 
 |  The modifiers that are enclosed in angle brackets are literal strings as shown, | 
  The modifiers that are enclosed in angle brackets are literal strings as shown, | 
 |  including the angle brackets, but the letters within can be in either case. | 
  including the angle brackets, but the letters within can be in either case. | 
| 
 Line 268  This example sets multiline matching with CRLF as the 
 | 
 Line 405  This example sets multiline matching with CRLF as the 
 | 
 |  .sp | 
  .sp | 
 |    /^abc/m<CRLF> | 
    /^abc/m<CRLF> | 
 |  .sp | 
  .sp | 
| As well as turning on the PCRE_UTF8/16 option, the \fB/8\fP modifier causes | As well as turning on the PCRE_UTF8/16/32 option, the \fB/8\fP modifier causes | 
 |  all non-printing characters in output strings to be printed using the | 
  all non-printing characters in output strings to be printed using the | 
 |  \ex{hh...} notation. Otherwise, those less than 0x100 are output in hex without | 
  \ex{hh...} notation. Otherwise, those less than 0x100 are output in hex without | 
 |  the curly brackets. | 
  the curly brackets. | 
| 
 Line 287  Searching for all possible matches within each subject
 | 
 Line 424  Searching for all possible matches within each subject
 | 
 |  by the \fB/g\fP or \fB/G\fP modifier. After finding a match, PCRE is called | 
  by the \fB/g\fP or \fB/G\fP modifier. After finding a match, PCRE is called | 
 |  again to search the remainder of the subject string. The difference between | 
  again to search the remainder of the subject string. The difference between | 
 |  \fB/g\fP and \fB/G\fP is that the former uses the \fIstartoffset\fP argument to | 
  \fB/g\fP and \fB/G\fP is that the former uses the \fIstartoffset\fP argument to | 
| \fBpcre[16]_exec()\fP to start searching at a new point within the entire | \fBpcre[16|32]_exec()\fP to start searching at a new point within the entire | 
 |  string (which is in effect what Perl does), whereas the latter passes over a | 
  string (which is in effect what Perl does), whereas the latter passes over a | 
 |  shortened substring. This makes a difference to the matching process if the | 
  shortened substring. This makes a difference to the matching process if the | 
 |  pattern begins with a lookbehind assertion (including \eb or \eB). | 
  pattern begins with a lookbehind assertion (including \eb or \eB). | 
 |  .P | 
  .P | 
| If any call to \fBpcre[16]_exec()\fP in a \fB/g\fP or \fB/G\fP sequence matches | If any call to \fBpcre[16|32]_exec()\fP in a \fB/g\fP or \fB/G\fP sequence matches | 
 |  an empty string, the next call is done with the PCRE_NOTEMPTY_ATSTART and | 
  an empty string, the next call is done with the PCRE_NOTEMPTY_ATSTART and | 
 |  PCRE_ANCHORED flags set in order to search for another, non-empty, match at the | 
  PCRE_ANCHORED flags set in order to search for another, non-empty, match at the | 
 |  same point. If this second match fails, the start offset is advanced, and the | 
  same point. If this second match fails, the start offset is advanced, and the | 
| 
 Line 316  contains multiple copies of the same substring. If the
 | 
 Line 453  contains multiple copies of the same substring. If the
 | 
 |  twice, the same action is taken for captured substrings. In each case the | 
  twice, the same action is taken for captured substrings. In each case the | 
 |  remainder is output on the following line with a plus character following the | 
  remainder is output on the following line with a plus character following the | 
 |  capture number. Note that this modifier must not immediately follow the /S | 
  capture number. Note that this modifier must not immediately follow the /S | 
| modifier because /S+ has another meaning. | modifier because /S+ and /S++ have other meanings. | 
 |  .P | 
  .P | 
 |  The \fB/=\fP modifier requests that the values of all potential captured | 
  The \fB/=\fP modifier requests that the values of all potential captured | 
 |  parentheses be output after a match. By default, only those up to the highest | 
  parentheses be output after a match. By default, only those up to the highest | 
 |  one actually used in the match are output (corresponding to the return code | 
  one actually used in the match are output (corresponding to the return code | 
| from \fBpcre[16]_exec()\fP). Values in the offsets vector corresponding to | from \fBpcre[16|32]_exec()\fP). Values in the offsets vector corresponding to | 
 |  higher numbers should be set to -1, and these are output as "<unset>". This | 
  higher numbers should be set to -1, and these are output as "<unset>". This | 
 |  modifier gives a way of checking that this is happening. | 
  modifier gives a way of checking that this is happening. | 
 |  .P | 
  .P | 
| 
 Line 345  below.
 | 
 Line 482  below.
 | 
 |  .P | 
  .P | 
 |  The \fB/I\fP modifier requests that \fBpcretest\fP output information about the | 
  The \fB/I\fP modifier requests that \fBpcretest\fP output information about the | 
 |  compiled pattern (whether it is anchored, has a fixed first character, and | 
  compiled pattern (whether it is anchored, has a fixed first character, and | 
| so on). It does this by calling \fBpcre[16]_fullinfo()\fP after compiling a | so on). It does this by calling \fBpcre[16|32]_fullinfo()\fP after compiling a | 
 |  pattern. If the pattern is studied, the results of that are also output. | 
  pattern. If the pattern is studied, the results of that are also output. | 
 |  .P | 
  .P | 
 |  The \fB/K\fP modifier requests \fBpcretest\fP to show names from backtracking | 
  The \fB/K\fP modifier requests \fBpcretest\fP to show names from backtracking | 
| control verbs that are returned from calls to \fBpcre[16]_exec()\fP. It causes | control verbs that are returned from calls to \fBpcre[16|32]_exec()\fP. It causes | 
| \fBpcretest\fP to create a \fBpcre[16]_extra\fP block if one has not already | \fBpcretest\fP to create a \fBpcre[16|32]_extra\fP block if one has not already | 
| been created by a call to \fBpcre[16]_study()\fP, and to set the | been created by a call to \fBpcre[16|32]_study()\fP, and to set the | 
 |  PCRE_EXTRA_MARK flag and the \fBmark\fP field within it, every time that | 
  PCRE_EXTRA_MARK flag and the \fBmark\fP field within it, every time that | 
| \fBpcre[16]_exec()\fP is called. If the variable that the \fBmark\fP field | \fBpcre[16|32]_exec()\fP is called. If the variable that the \fBmark\fP field | 
 |  points to is non-NULL for a match, non-match, or partial match, \fBpcretest\fP | 
  points to is non-NULL for a match, non-match, or partial match, \fBpcretest\fP | 
 |  prints the string to which it points. For a match, this is shown on a line by | 
  prints the string to which it points. For a match, this is shown on a line by | 
 |  itself, tagged with "MK:". For a non-match it is added to the message. | 
  itself, tagged with "MK:". For a non-match it is added to the message. | 
| 
 Line 364  example,
 | 
 Line 501  example,
 | 
 |    /pattern/Lfr_FR | 
    /pattern/Lfr_FR | 
 |  .sp | 
  .sp | 
 |  For this reason, it must be the last modifier. The given locale is set, | 
  For this reason, it must be the last modifier. The given locale is set, | 
| \fBpcre[16]_maketables()\fP is called to build a set of character tables for | \fBpcre[16|32]_maketables()\fP is called to build a set of character tables for | 
| the locale, and this is then passed to \fBpcre[16]_compile()\fP when compiling | the locale, and this is then passed to \fBpcre[16|32]_compile()\fP when compiling | 
 |  the regular expression. Without an \fB/L\fP (or \fB/T\fP) modifier, NULL is | 
  the regular expression. Without an \fB/L\fP (or \fB/T\fP) modifier, NULL is | 
 |  passed as the tables pointer; that is, \fB/L\fP applies only to the expression | 
  passed as the tables pointer; that is, \fB/L\fP applies only to the expression | 
 |  on which it appears. | 
  on which it appears. | 
 |  .P | 
  .P | 
 |  The \fB/M\fP modifier causes the size in bytes of the memory block used to hold | 
  The \fB/M\fP modifier causes the size in bytes of the memory block used to hold | 
 |  the compiled pattern to be output. This does not include the size of the | 
  the compiled pattern to be output. This does not include the size of the | 
| \fBpcre[16]\fP block; it is just the actual compiled data. If the pattern is | \fBpcre[16|32]\fP block; it is just the actual compiled data. If the pattern is | 
 |  successfully studied with the PCRE_STUDY_JIT_COMPILE option, the size of the | 
  successfully studied with the PCRE_STUDY_JIT_COMPILE option, the size of the | 
 |  JIT compiled code is also output. | 
  JIT compiled code is also output. | 
 |  .P | 
  .P | 
| If the \fB/S\fP modifier appears once, it causes \fBpcre[16]_study()\fP to be | The \fB/S\fP modifier causes \fBpcre[16|32]_study()\fP to be called after the | 
| called after the expression has been compiled, and the results used when the | expression has been compiled, and the results used when the expression is | 
| expression is matched. If \fB/S\fP appears twice, it suppresses studying, even | matched. There are a number of qualifying characters that may follow \fB/S\fP. | 
|   | They may appear in any order. | 
|   | .P | 
|   | If \fB/S\fP is followed by an exclamation mark, \fBpcre[16|32]_study()\fP is | 
|   | called with the PCRE_STUDY_EXTRA_NEEDED option, causing it always to return a | 
|   | \fBpcre_extra\fP block, even when studying discovers no useful information. | 
|   | .P | 
|   | If \fB/S\fP is followed by a second S character, it suppresses studying, even | 
 |  if it was requested externally by the \fB-s\fP command line option. This makes | 
  if it was requested externally by the \fB-s\fP command line option. This makes | 
 |  it possible to specify that certain patterns are always studied, and others are | 
  it possible to specify that certain patterns are always studied, and others are | 
 |  never studied, independently of \fB-s\fP. This feature is used in the test | 
  never studied, independently of \fB-s\fP. This feature is used in the test | 
 |  files in a few cases where the output is different when the pattern is studied. | 
  files in a few cases where the output is different when the pattern is studied. | 
 |  .P | 
  .P | 
| If the \fB/S\fP modifier is immediately followed by a + character, the call to | If the \fB/S\fP modifier is followed by a + character, the call to | 
| \fBpcre[16]_study()\fP is made with the PCRE_STUDY_JIT_COMPILE option, | \fBpcre[16|32]_study()\fP is made with all the JIT study options, requesting | 
| requesting just-in-time optimization support if it is available. Note that | just-in-time optimization support if it is available, for both normal and | 
| there is also a \fB/+\fP modifier; it must not be given immediately after | partial matching. If you want to restrict the JIT compiling modes, you can | 
| \fB/S\fP because this will be misinterpreted. If JIT studying is successful, it | follow \fB/S+\fP with a digit in the range 1 to 7: | 
| will automatically be used when \fBpcre[16]_exec()\fP is run, except when | .sp | 
| incompatible run-time options are specified. These include the partial matching |   1  normal match only | 
| options; a complete list is given in the |   2  soft partial match only | 
|   |   3  normal match and soft partial match | 
|   |   4  hard partial match only | 
|   |   6  soft and hard partial match | 
|   |   7  all three modes (default) | 
|   | .sp | 
|   | If \fB/S++\fP is used instead of \fB/S+\fP (with or without a following digit), | 
|   | the text "(JIT)" is added to the first output line after a match or no match | 
|   | when JIT-compiled code was actually used. | 
|   | .P | 
|   | Note that there is also an independent \fB/+\fP modifier; it must not be given | 
|   | immediately after \fB/S\fP or \fB/S+\fP because this will be misinterpreted. | 
|   | .P | 
|   | If JIT studying is successful, the compiled JIT code will automatically be used | 
|   | when \fBpcre[16|32]_exec()\fP is run, except when incompatible run-time options | 
|   | are specified. For more details, see the | 
 |  .\" HREF | 
  .\" HREF | 
 |  \fBpcrejit\fP | 
  \fBpcrejit\fP | 
 |  .\" | 
  .\" | 
 |  documentation. See also the \fB\eJ\fP escape sequence below for a way of | 
  documentation. See also the \fB\eJ\fP escape sequence below for a way of | 
 |  setting the size of the JIT stack. | 
  setting the size of the JIT stack. | 
 |  .P | 
  .P | 
 |   | 
  Finally, if \fB/S\fP is followed by a minus character, JIT compilation is | 
 |   | 
  suppressed, even if it was requested externally by the \fB-s\fP command line | 
 |   | 
  option. This makes it possible to specify that JIT is never to be used for | 
 |   | 
  certain patterns. | 
 |   | 
  .P | 
 |  The \fB/T\fP modifier must be followed by a single digit. It causes a specific | 
  The \fB/T\fP modifier must be followed by a single digit. It causes a specific | 
| set of built-in character tables to be passed to \fBpcre[16]_compile()\fP. It | set of built-in character tables to be passed to \fBpcre[16|32]_compile()\fP. It | 
 |  is used in the standard PCRE tests to check behaviour with different character | 
  is used in the standard PCRE tests to check behaviour with different character | 
 |  tables. The digit specifies the tables as follows: | 
  tables. The digit specifies the tables as follows: | 
 |  .sp | 
  .sp | 
| 
 Line 431  The \fB/+\fP modifier works as described above. All ot
 | 
 Line 595  The \fB/+\fP modifier works as described above. All ot
 | 
 |  ignored. | 
  ignored. | 
 |  . | 
  . | 
 |  . | 
  . | 
 |   | 
  .SS "Locking out certain modifiers" | 
 |   | 
  .rs | 
 |   | 
  .sp | 
 |   | 
  PCRE can be compiled with or without support for certain features such as | 
 |   | 
  UTF-8/16/32 or Unicode properties. Accordingly, the standard tests are split up | 
 |   | 
  into a number of different files that are selected for running depending on | 
 |   | 
  which features are available. When updating the tests, it is all too easy to | 
 |   | 
  put a new test into the wrong file by mistake; for example, to put a test that | 
 |   | 
  requires UTF support into a file that is used when it is not available. To help | 
 |   | 
  detect such mistakes as early as possible, there is a facility for locking out | 
 |   | 
  specific modifiers. If an input line for \fBpcretest\fP starts with the string | 
 |   | 
  "< forbid " the following sequence of characters is taken as a list of | 
 |   | 
  forbidden modifiers. For example, in the test files that must not use UTF or | 
 |   | 
  Unicode property support, this line appears: | 
 |   | 
  .sp | 
 |   | 
    < forbid 8W | 
 |   | 
  .sp | 
 |   | 
  This locks out the /8 and /W modifiers. An immediate error is given if they are | 
 |   | 
  subsequently encountered. If the character string contains < but not >, all the | 
 |   | 
  multi-character modifiers that begin with < are locked out. Otherwise, such | 
 |   | 
  modifiers must be explicitly listed, for example: | 
 |   | 
  .sp | 
 |   | 
    < forbid <JS><cr> | 
 |   | 
  .sp | 
 |   | 
  There must be a single space between < and "forbid" for this feature to be | 
 |   | 
  recognised. If there is not, the line is interpreted either as a request to | 
 |   | 
  re-load a pre-compiled pattern (see "SAVING AND RELOADING COMPILED PATTERNS" | 
 |   | 
  below) or, if there is a another < character, as a pattern that uses < as its | 
 |   | 
  delimiter. | 
 |   | 
  . | 
 |   | 
  . | 
 |  .SH "DATA LINES" | 
  .SH "DATA LINES" | 
 |  .rs | 
  .rs | 
 |  .sp | 
  .sp | 
| Before each data line is passed to \fBpcre[16]_exec()\fP, leading and trailing | Before each data line is passed to \fBpcre[16|32]_exec()\fP, leading and trailing | 
 |  white space is removed, and it is then scanned for \e escapes. Some of these | 
  white space is removed, and it is then scanned for \e escapes. Some of these | 
 |  are pretty esoteric features, intended for checking out some of the more | 
  are pretty esoteric features, intended for checking out some of the more | 
 |  complicated features of PCRE. If you are just testing "ordinary" regular | 
  complicated features of PCRE. If you are just testing "ordinary" regular | 
| 
 Line 453  recognized:
 | 
 Line 648  recognized:
 | 
 |    \et         tab (\ex09) | 
    \et         tab (\ex09) | 
 |    \ev         vertical tab (\ex0b) | 
    \ev         vertical tab (\ex0b) | 
 |    \ennn       octal character (up to 3 octal digits); always | 
    \ennn       octal character (up to 3 octal digits); always | 
|                a byte unless > 255 in UTF-8 or 16-bit mode |                a byte unless > 255 in UTF-8 or 16-bit or 32-bit mode | 
|   |   \eo{dd...}  octal character (any number of octal digits} | 
 |    \exhh       hexadecimal byte (up to 2 hex digits) | 
    \exhh       hexadecimal byte (up to 2 hex digits) | 
 |    \ex{hh...}  hexadecimal character (any number of hex digits) | 
    \ex{hh...}  hexadecimal character (any number of hex digits) | 
 |  .\" JOIN | 
  .\" JOIN | 
|   \eA         pass the PCRE_ANCHORED option to \fBpcre[16]_exec()\fP |   \eA         pass the PCRE_ANCHORED option to \fBpcre[16|32]_exec()\fP | 
|                or \fBpcre[16]_dfa_exec()\fP |                or \fBpcre[16|32]_dfa_exec()\fP | 
 |  .\" JOIN | 
  .\" JOIN | 
|   \eB         pass the PCRE_NOTBOL option to \fBpcre[16]_exec()\fP |   \eB         pass the PCRE_NOTBOL option to \fBpcre[16|32]_exec()\fP | 
|                or \fBpcre[16]_dfa_exec()\fP |                or \fBpcre[16|32]_dfa_exec()\fP | 
 |  .\" JOIN | 
  .\" JOIN | 
|   \eCdd       call pcre[16]_copy_substring() for substring dd |   \eCdd       call pcre[16|32]_copy_substring() for substring dd | 
 |                 after a successful match (number less than 32) | 
                 after a successful match (number less than 32) | 
 |  .\" JOIN | 
  .\" JOIN | 
|   \eCname     call pcre[16]_copy_named_substring() for substring |   \eCname     call pcre[16|32]_copy_named_substring() for substring | 
 |                 "name" after a successful match (name termin- | 
                 "name" after a successful match (name termin- | 
 |                 ated by next non alphanumeric character) | 
                 ated by next non alphanumeric character) | 
 |  .\" JOIN | 
  .\" JOIN | 
| 
 Line 482  recognized:
 | 
 Line 678  recognized:
 | 
 |  .\" JOIN | 
  .\" JOIN | 
 |    \eC*n       pass the number n (may be negative) as callout | 
    \eC*n       pass the number n (may be negative) as callout | 
 |                 data; this is used as the callout return value | 
                 data; this is used as the callout return value | 
|   \eD         use the \fBpcre[16]_dfa_exec()\fP match function |   \eD         use the \fBpcre[16|32]_dfa_exec()\fP match function | 
|   \eF         only shortest match for \fBpcre[16]_dfa_exec()\fP |   \eF         only shortest match for \fBpcre[16|32]_dfa_exec()\fP | 
 |  .\" JOIN | 
  .\" JOIN | 
|   \eGdd       call pcre[16]_get_substring() for substring dd |   \eGdd       call pcre[16|32]_get_substring() for substring dd | 
 |                 after a successful match (number less than 32) | 
                 after a successful match (number less than 32) | 
 |  .\" JOIN | 
  .\" JOIN | 
|   \eGname     call pcre[16]_get_named_substring() for substring |   \eGname     call pcre[16|32]_get_named_substring() for substring | 
 |                 "name" after a successful match (name termin- | 
                 "name" after a successful match (name termin- | 
 |                 ated by next non-alphanumeric character) | 
                 ated by next non-alphanumeric character) | 
 |  .\" JOIN | 
  .\" JOIN | 
 |    \eJdd       set up a JIT stack of dd kilobytes maximum (any | 
    \eJdd       set up a JIT stack of dd kilobytes maximum (any | 
 |                 number of digits) | 
                 number of digits) | 
 |  .\" JOIN | 
  .\" JOIN | 
|   \eL         call pcre[16]_get_substringlist() after a |   \eL         call pcre[16|32]_get_substringlist() after a | 
 |                 successful match | 
                 successful match | 
 |  .\" JOIN | 
  .\" JOIN | 
 |    \eM         discover the minimum MATCH_LIMIT and | 
    \eM         discover the minimum MATCH_LIMIT and | 
 |                 MATCH_LIMIT_RECURSION settings | 
                 MATCH_LIMIT_RECURSION settings | 
 |  .\" JOIN | 
  .\" JOIN | 
|   \eN         pass the PCRE_NOTEMPTY option to \fBpcre[16]_exec()\fP |   \eN         pass the PCRE_NOTEMPTY option to \fBpcre[16|32]_exec()\fP | 
|                or \fBpcre[16]_dfa_exec()\fP; if used twice, pass the |                or \fBpcre[16|32]_dfa_exec()\fP; if used twice, pass the | 
 |                 PCRE_NOTEMPTY_ATSTART option | 
                 PCRE_NOTEMPTY_ATSTART option | 
 |  .\" JOIN | 
  .\" JOIN | 
 |    \eOdd       set the size of the output vector passed to | 
    \eOdd       set the size of the output vector passed to | 
|                \fBpcre[16]_exec()\fP to dd (any number of digits) |                \fBpcre[16|32]_exec()\fP to dd (any number of digits) | 
 |  .\" JOIN | 
  .\" JOIN | 
|   \eP         pass the PCRE_PARTIAL_SOFT option to \fBpcre[16]_exec()\fP |   \eP         pass the PCRE_PARTIAL_SOFT option to \fBpcre[16|32]_exec()\fP | 
|                or \fBpcre[16]_dfa_exec()\fP; if used twice, pass the |                or \fBpcre[16|32]_dfa_exec()\fP; if used twice, pass the | 
 |                 PCRE_PARTIAL_HARD option | 
                 PCRE_PARTIAL_HARD option | 
 |  .\" JOIN | 
  .\" JOIN | 
 |    \eQdd       set the PCRE_MATCH_LIMIT_RECURSION limit to dd | 
    \eQdd       set the PCRE_MATCH_LIMIT_RECURSION limit to dd | 
 |                 (any number of digits) | 
                 (any number of digits) | 
|   \eR         pass the PCRE_DFA_RESTART option to \fBpcre[16]_dfa_exec()\fP |   \eR         pass the PCRE_DFA_RESTART option to \fBpcre[16|32]_dfa_exec()\fP | 
 |    \eS         output details of memory get/free calls during matching | 
    \eS         output details of memory get/free calls during matching | 
 |  .\" JOIN | 
  .\" JOIN | 
|   \eY         pass the PCRE_NO_START_OPTIMIZE option to \fBpcre[16]_exec()\fP |   \eY         pass the PCRE_NO_START_OPTIMIZE option to \fBpcre[16|32]_exec()\fP | 
|                or \fBpcre[16]_dfa_exec()\fP |                or \fBpcre[16|32]_dfa_exec()\fP | 
 |  .\" JOIN | 
  .\" JOIN | 
|   \eZ         pass the PCRE_NOTEOL option to \fBpcre[16]_exec()\fP |   \eZ         pass the PCRE_NOTEOL option to \fBpcre[16|32]_exec()\fP | 
|                or \fBpcre[16]_dfa_exec()\fP |                or \fBpcre[16|32]_dfa_exec()\fP | 
 |  .\" JOIN | 
  .\" JOIN | 
|   \e?         pass the PCRE_NO_UTF[8|16]_CHECK option to |   \e?         pass the PCRE_NO_UTF[8|16|32]_CHECK option to | 
|                \fBpcre[16]_exec()\fP or \fBpcre[16]_dfa_exec()\fP |                \fBpcre[16|32]_exec()\fP or \fBpcre[16|32]_dfa_exec()\fP | 
 |  .\" JOIN | 
  .\" JOIN | 
 |    \e>dd       start the match at offset dd (optional "-"; then | 
    \e>dd       start the match at offset dd (optional "-"; then | 
 |                 any number of digits); this sets the \fIstartoffset\fP | 
                 any number of digits); this sets the \fIstartoffset\fP | 
|                argument for \fBpcre[16]_exec()\fP or \fBpcre[16]_dfa_exec()\fP |                argument for \fBpcre[16|32]_exec()\fP or \fBpcre[16|32]_dfa_exec()\fP | 
 |  .\" JOIN | 
  .\" JOIN | 
|   \e<cr>      pass the PCRE_NEWLINE_CR option to \fBpcre[16]_exec()\fP |   \e<cr>      pass the PCRE_NEWLINE_CR option to \fBpcre[16|32]_exec()\fP | 
|                or \fBpcre[16]_dfa_exec()\fP |                or \fBpcre[16|32]_dfa_exec()\fP | 
 |  .\" JOIN | 
  .\" JOIN | 
|   \e<lf>      pass the PCRE_NEWLINE_LF option to \fBpcre[16]_exec()\fP |   \e<lf>      pass the PCRE_NEWLINE_LF option to \fBpcre[16|32]_exec()\fP | 
|                or \fBpcre[16]_dfa_exec()\fP |                or \fBpcre[16|32]_dfa_exec()\fP | 
 |  .\" JOIN | 
  .\" JOIN | 
|   \e<crlf>    pass the PCRE_NEWLINE_CRLF option to \fBpcre[16]_exec()\fP |   \e<crlf>    pass the PCRE_NEWLINE_CRLF option to \fBpcre[16|32]_exec()\fP | 
|                or \fBpcre[16]_dfa_exec()\fP |                or \fBpcre[16|32]_dfa_exec()\fP | 
 |  .\" JOIN | 
  .\" JOIN | 
|   \e<anycrlf> pass the PCRE_NEWLINE_ANYCRLF option to \fBpcre[16]_exec()\fP |   \e<anycrlf> pass the PCRE_NEWLINE_ANYCRLF option to \fBpcre[16|32]_exec()\fP | 
|                or \fBpcre[16]_dfa_exec()\fP |                or \fBpcre[16|32]_dfa_exec()\fP | 
 |  .\" JOIN | 
  .\" JOIN | 
|   \e<any>     pass the PCRE_NEWLINE_ANY option to \fBpcre[16]_exec()\fP |   \e<any>     pass the PCRE_NEWLINE_ANY option to \fBpcre[16|32]_exec()\fP | 
|                or \fBpcre[16]_dfa_exec()\fP |                or \fBpcre[16|32]_dfa_exec()\fP | 
 |  .sp | 
  .sp | 
 |  The use of \ex{hh...} is not dependent on the use of the \fB/8\fP modifier on | 
  The use of \ex{hh...} is not dependent on the use of the \fB/8\fP modifier on | 
 |  the pattern. It is recognized always. There may be any number of hexadecimal | 
  the pattern. It is recognized always. There may be any number of hexadecimal | 
| 
 Line 559  for values less than 256, and causes an error for grea
 | 
 Line 755  for values less than 256, and causes an error for grea
 | 
 |  In UTF-16 mode, all 4-digit \ex{hhhh} values are accepted. This makes it | 
  In UTF-16 mode, all 4-digit \ex{hhhh} values are accepted. This makes it | 
 |  possible to construct invalid UTF-16 sequences for testing purposes. | 
  possible to construct invalid UTF-16 sequences for testing purposes. | 
 |  .P | 
  .P | 
 |   | 
  In UTF-32 mode, all 4- to 8-digit \ex{...} values are accepted. This makes it | 
 |   | 
  possible to construct invalid UTF-32 sequences for testing purposes. | 
 |   | 
  .P | 
 |  The escapes that specify line ending sequences are literal strings, exactly as | 
  The escapes that specify line ending sequences are literal strings, exactly as | 
 |  shown. No more than one newline setting should be present in any data line. | 
  shown. No more than one newline setting should be present in any data line. | 
 |  .P | 
  .P | 
| 
 Line 572  used by the just-in-time optimization code. It is igno
 | 
 Line 771  used by the just-in-time optimization code. It is igno
 | 
 |  is not being used. Providing a stack that is larger than the default 32K is | 
  is not being used. Providing a stack that is larger than the default 32K is | 
 |  necessary only for very complicated patterns. | 
  necessary only for very complicated patterns. | 
 |  .P | 
  .P | 
| If \eM is present, \fBpcretest\fP calls \fBpcre[16]_exec()\fP several times, | If \eM is present, \fBpcretest\fP calls \fBpcre[16|32]_exec()\fP several times, | 
 |  with different values in the \fImatch_limit\fP and \fImatch_limit_recursion\fP | 
  with different values in the \fImatch_limit\fP and \fImatch_limit_recursion\fP | 
| fields of the \fBpcre[16]_extra\fP data structure, until it finds the minimum | fields of the \fBpcre[16|32]_extra\fP data structure, until it finds the minimum | 
| numbers for each parameter that allow \fBpcre[16]_exec()\fP to complete without | numbers for each parameter that allow \fBpcre[16|32]_exec()\fP to complete without | 
 |  error. Because this is testing a specific feature of the normal interpretive | 
  error. Because this is testing a specific feature of the normal interpretive | 
| \fBpcre[16]_exec()\fP execution, the use of any JIT optimization that might | \fBpcre[16|32]_exec()\fP execution, the use of any JIT optimization that might | 
 |  have been set up by the \fB/S+\fP qualifier of \fB-s+\fP option is disabled. | 
  have been set up by the \fB/S+\fP qualifier of \fB-s+\fP option is disabled. | 
 |  .P | 
  .P | 
 |  The \fImatch_limit\fP number is a measure of the amount of backtracking | 
  The \fImatch_limit\fP number is a measure of the amount of backtracking | 
| 
 Line 590  needed to complete the match attempt.
 | 
 Line 789  needed to complete the match attempt.
 | 
 |  .P | 
  .P | 
 |  When \eO is used, the value specified may be higher or lower than the size set | 
  When \eO is used, the value specified may be higher or lower than the size set | 
 |  by the \fB-O\fP command line option (or defaulted to 45); \eO applies only to | 
  by the \fB-O\fP command line option (or defaulted to 45); \eO applies only to | 
| the call of \fBpcre[16]_exec()\fP for the line in which it appears. | the call of \fBpcre[16|32]_exec()\fP for the line in which it appears. | 
 |  .P | 
  .P | 
 |  If the \fB/P\fP modifier was present on the pattern, causing the POSIX wrapper | 
  If the \fB/P\fP modifier was present on the pattern, causing the POSIX wrapper | 
 |  API to be used, the only option-setting sequences that have any effect are \eB, | 
  API to be used, the only option-setting sequences that have any effect are \eB, | 
| 
 Line 602  to be passed to \fBregexec()\fP.
 | 
 Line 801  to be passed to \fBregexec()\fP.
 | 
 |  .rs | 
  .rs | 
 |  .sp | 
  .sp | 
 |  By default, \fBpcretest\fP uses the standard PCRE matching function, | 
  By default, \fBpcretest\fP uses the standard PCRE matching function, | 
| \fBpcre[16]_exec()\fP to match each data line. PCRE also supports an | \fBpcre[16|32]_exec()\fP to match each data line. PCRE also supports an | 
| alternative matching function, \fBpcre[16]_dfa_test()\fP, which operates in a | alternative matching function, \fBpcre[16|32]_dfa_test()\fP, which operates in a | 
 |  different way, and has some restrictions. The differences between the two | 
  different way, and has some restrictions. The differences between the two | 
 |  functions are described in the | 
  functions are described in the | 
 |  .\" HREF | 
  .\" HREF | 
| 
 Line 622  found. This is always the shortest possible match.
 | 
 Line 821  found. This is always the shortest possible match.
 | 
 |  .rs | 
  .rs | 
 |  .sp | 
  .sp | 
 |  This section describes the output when the normal matching function, | 
  This section describes the output when the normal matching function, | 
| \fBpcre[16]_exec()\fP, is being used. | \fBpcre[16|32]_exec()\fP, is being used. | 
 |  .P | 
  .P | 
 |  When a match succeeds, \fBpcretest\fP outputs the list of captured substrings | 
  When a match succeeds, \fBpcretest\fP outputs the list of captured substrings | 
| that \fBpcre[16]_exec()\fP returns, starting with number 0 for the string that | that \fBpcre[16|32]_exec()\fP returns, starting with number 0 for the string that | 
 |  matched the whole pattern. Otherwise, it outputs "No match" when the return is | 
  matched the whole pattern. Otherwise, it outputs "No match" when the return is | 
 |  PCRE_ERROR_NOMATCH, and "Partial match:" followed by the partially matching | 
  PCRE_ERROR_NOMATCH, and "Partial match:" followed by the partially matching | 
| substring when \fBpcre[16]_exec()\fP returns PCRE_ERROR_PARTIAL. (Note that | substring when \fBpcre[16|32]_exec()\fP returns PCRE_ERROR_PARTIAL. (Note that | 
 |  this is the entire substring that was inspected during the partial match; it | 
  this is the entire substring that was inspected during the partial match; it | 
 |  may include characters before the actual match start if a lookbehind assertion, | 
  may include characters before the actual match start if a lookbehind assertion, | 
 |  \eK, \eb, or \eB was involved.) For any other return, \fBpcretest\fP outputs | 
  \eK, \eb, or \eB was involved.) For any other return, \fBpcretest\fP outputs | 
| 
 Line 648  at least two. Here is an example of an interactive \fB
 | 
 Line 847  at least two. Here is an example of an interactive \fB
 | 
 |    No match | 
    No match | 
 |  .sp | 
  .sp | 
 |  Unset capturing substrings that are not followed by one that is set are not | 
  Unset capturing substrings that are not followed by one that is set are not | 
| returned by \fBpcre[16]_exec()\fP, and are not shown by \fBpcretest\fP. In the | returned by \fBpcre[16|32]_exec()\fP, and are not shown by \fBpcretest\fP. In the | 
 |  following example, there are two capturing substrings, but when the first data | 
  following example, there are two capturing substrings, but when the first data | 
 |  line is matched, the second, unset substring is not shown. An "internal" unset | 
  line is matched, the second, unset substring is not shown. An "internal" unset | 
 |  substring is shown as "<unset>", as for the second data line. | 
  substring is shown as "<unset>", as for the second data line. | 
| 
 Line 711  the newline sequence setting).
 | 
 Line 910  the newline sequence setting).
 | 
 |  .SH "OUTPUT FROM THE ALTERNATIVE MATCHING FUNCTION" | 
  .SH "OUTPUT FROM THE ALTERNATIVE MATCHING FUNCTION" | 
 |  .rs | 
  .rs | 
 |  .sp | 
  .sp | 
| When the alternative matching function, \fBpcre[16]_dfa_exec()\fP, is used (by | When the alternative matching function, \fBpcre[16|32]_dfa_exec()\fP, is used (by | 
 |  means of the \eD escape sequence or the \fB-dfa\fP command line option), the | 
  means of the \eD escape sequence or the \fB-dfa\fP command line option), the | 
 |  output consists of a list of all the matches that start at the first point in | 
  output consists of a list of all the matches that start at the first point in | 
 |  the subject where there is at least one match. For example: | 
  the subject where there is at least one match. For example: | 
| 
 Line 874  exact copy of the compiled pattern. If there is additi
 | 
 Line 1073  exact copy of the compiled pattern. If there is additi
 | 
 |  writing the file, \fBpcretest\fP expects to read a new pattern. | 
  writing the file, \fBpcretest\fP expects to read a new pattern. | 
 |  .P | 
  .P | 
 |  A saved pattern can be reloaded into \fBpcretest\fP by specifying < and a file | 
  A saved pattern can be reloaded into \fBpcretest\fP by specifying < and a file | 
| name instead of a pattern. The name of the file must not contain a < character, | name instead of a pattern. There must be no space between < and the file name, | 
| as otherwise \fBpcretest\fP will interpret the line as a pattern delimited by < | which must not contain a < character, as otherwise \fBpcretest\fP will | 
| characters. | interpret the line as a pattern delimited by < characters. For example: | 
| For example: |   | 
 |  .sp | 
  .sp | 
 |     re> </some/file | 
     re> </some/file | 
 |    Compiled pattern loaded from /some/file | 
    Compiled pattern loaded from /some/file | 
| 
 Line 917  result is undefined.
 | 
 Line 1115  result is undefined.
 | 
 |  .SH "SEE ALSO" | 
  .SH "SEE ALSO" | 
 |  .rs | 
  .rs | 
 |  .sp | 
  .sp | 
| \fBpcre\fP(3), \fBpcre16\fP(3), \fBpcreapi\fP(3), \fBpcrecallout\fP(3), | \fBpcre\fP(3), \fBpcre16\fP(3), \fBpcre32\fP(3), \fBpcreapi\fP(3), | 
|   | \fBpcrecallout\fP(3), | 
 |  \fBpcrejit\fP, \fBpcrematching\fP(3), \fBpcrepartial\fP(d), | 
  \fBpcrejit\fP, \fBpcrematching\fP(3), \fBpcrepartial\fP(d), | 
 |  \fBpcrepattern\fP(3), \fBpcreprecompile\fP(3). | 
  \fBpcrepattern\fP(3), \fBpcreprecompile\fP(3). | 
 |  . | 
  . | 
| 
 Line 936  Cambridge CB2 3QH, England.
 | 
 Line 1135  Cambridge CB2 3QH, England.
 | 
 |  .rs | 
  .rs | 
 |  .sp | 
  .sp | 
 |  .nf | 
  .nf | 
| Last updated: 14 January 2012 | Last updated: 12 November 2013 | 
| Copyright (c) 1997-2012 University of Cambridge. | Copyright (c) 1997-2013 University of Cambridge. | 
 |  .fi | 
  .fi |