~ubuntu-branches/ubuntu/trusty/pcre3/trusty

« back to all changes in this revision

Viewing changes to doc/html/pcretest.html

  • Committer: Package Import Robot
  • Author(s): Mark Baker
  • Date: 2012-03-23 22:34:54 UTC
  • mfrom: (23.1.9 sid)
  • Revision ID: package-import@ubuntu.com-20120323223454-grhqqolk8a7x1h24
Tags: 1:8.30-4
* Reluctantly using an epoch, as it seems the funny version number with
  extra dots causes problems
* Bumped standard version to 3.9.3. No changes needed
* Converted to use new source format / quilt
* Put back obsolete pcre_info() API that upstream have dropped (Closes:
  #665300, #665356)
* Don't include pcregrep binary in debug package

Thanks to Elimar Riesebieter for the conversion to the new source format.

Show diffs side-by-side

added added

removed removed

Lines of Context:
14
14
<br>
15
15
<ul>
16
16
<li><a name="TOC1" href="#SEC1">SYNOPSIS</a>
17
 
<li><a name="TOC2" href="#SEC2">OPTIONS</a>
18
 
<li><a name="TOC3" href="#SEC3">DESCRIPTION</a>
19
 
<li><a name="TOC4" href="#SEC4">PATTERN MODIFIERS</a>
20
 
<li><a name="TOC5" href="#SEC5">DATA LINES</a>
21
 
<li><a name="TOC6" href="#SEC6">THE ALTERNATIVE MATCHING FUNCTION</a>
22
 
<li><a name="TOC7" href="#SEC7">DEFAULT OUTPUT FROM PCRETEST</a>
23
 
<li><a name="TOC8" href="#SEC8">OUTPUT FROM THE ALTERNATIVE MATCHING FUNCTION</a>
24
 
<li><a name="TOC9" href="#SEC9">RESTARTING AFTER A PARTIAL MATCH</a>
25
 
<li><a name="TOC10" href="#SEC10">CALLOUTS</a>
26
 
<li><a name="TOC11" href="#SEC11">NON-PRINTING CHARACTERS</a>
27
 
<li><a name="TOC12" href="#SEC12">SAVING AND RELOADING COMPILED PATTERNS</a>
28
 
<li><a name="TOC13" href="#SEC13">SEE ALSO</a>
29
 
<li><a name="TOC14" href="#SEC14">AUTHOR</a>
30
 
<li><a name="TOC15" href="#SEC15">REVISION</a>
 
17
<li><a name="TOC2" href="#SEC2">PCRE's 8-BIT and 16-BIT LIBRARIES</a>
 
18
<li><a name="TOC3" href="#SEC3">COMMAND LINE OPTIONS</a>
 
19
<li><a name="TOC4" href="#SEC4">DESCRIPTION</a>
 
20
<li><a name="TOC5" href="#SEC5">PATTERN MODIFIERS</a>
 
21
<li><a name="TOC6" href="#SEC6">DATA LINES</a>
 
22
<li><a name="TOC7" href="#SEC7">THE ALTERNATIVE MATCHING FUNCTION</a>
 
23
<li><a name="TOC8" href="#SEC8">DEFAULT OUTPUT FROM PCRETEST</a>
 
24
<li><a name="TOC9" href="#SEC9">OUTPUT FROM THE ALTERNATIVE MATCHING FUNCTION</a>
 
25
<li><a name="TOC10" href="#SEC10">RESTARTING AFTER A PARTIAL MATCH</a>
 
26
<li><a name="TOC11" href="#SEC11">CALLOUTS</a>
 
27
<li><a name="TOC12" href="#SEC12">NON-PRINTING CHARACTERS</a>
 
28
<li><a name="TOC13" href="#SEC13">SAVING AND RELOADING COMPILED PATTERNS</a>
 
29
<li><a name="TOC14" href="#SEC14">SEE ALSO</a>
 
30
<li><a name="TOC15" href="#SEC15">AUTHOR</a>
 
31
<li><a name="TOC16" href="#SEC16">REVISION</a>
31
32
</ul>
32
33
<br><a name="SEC1" href="#TOC1">SYNOPSIS</a><br>
33
34
<P>
34
 
<b>pcretest [options] [source] [destination]</b>
 
35
<b>pcretest [options] [input file [output file]]</b>
35
36
<br>
36
37
<br>
37
38
<b>pcretest</b> was written as a test program for the PCRE regular expression
42
43
documentation. For details of the PCRE library function calls and their
43
44
options, see the
44
45
<a href="pcreapi.html"><b>pcreapi</b></a>
45
 
documentation.
46
 
</P>
47
 
<br><a name="SEC2" href="#TOC1">OPTIONS</a><br>
 
46
and
 
47
<a href="pcre16.html"><b>pcre16</b></a>
 
48
documentation. The input for <b>pcretest</b> is a sequence of regular expression
 
49
patterns and strings to be matched, as described below. The output shows the
 
50
result of each match. Options on the command line and the patterns control PCRE
 
51
options and exactly what is output.
 
52
</P>
 
53
<br><a name="SEC2" href="#TOC1">PCRE's 8-BIT and 16-BIT LIBRARIES</a><br>
 
54
<P>
 
55
From release 8.30, two separate PCRE libraries can be built. The original one
 
56
supports 8-bit character strings, whereas the newer 16-bit library supports
 
57
character strings encoded in 16-bit units. The <b>pcretest</b> program can be
 
58
used to test both libraries. However, it is itself still an 8-bit program,
 
59
reading 8-bit input and writing 8-bit output. When testing the 16-bit library,
 
60
the patterns and data strings are converted to 16-bit format before being
 
61
passed to the PCRE library functions. Results are converted to 8-bit for
 
62
output.
 
63
</P>
 
64
<P>
 
65
References to functions and structures of the form <b>pcre[16]_xx</b> below
 
66
mean "<b>pcre_xx</b> when using the 8-bit library or <b>pcre16_xx</b> when using
 
67
the 16-bit library".
 
68
</P>
 
69
<br><a name="SEC3" href="#TOC1">COMMAND LINE OPTIONS</a><br>
 
70
<P>
 
71
<b>-16</b>
 
72
If both the 8-bit and the 16-bit libraries have been built, this option causes
 
73
the 16-bit library to be used. If only the 16-bit library has been built, this
 
74
is the default (so has no effect). If only the 8-bit library has been built,
 
75
this option causes an error.
 
76
</P>
48
77
<P>
49
78
<b>-b</b>
50
 
Behave as if each regex has the <b>/B</b> (show bytecode) modifier; the internal
51
 
form is output after compilation.
 
79
Behave as if each pattern has the <b>/B</b> (show byte code) modifier; the
 
80
internal form is output after compilation.
52
81
</P>
53
82
<P>
54
83
<b>-C</b>
55
84
Output the version number of the PCRE library, and all available information
56
 
about the optional features that are included, and then exit.
 
85
about the optional features that are included, and then exit. All other options
 
86
are ignored.
 
87
</P>
 
88
<P>
 
89
<b>-C</b> <i>option</i>
 
90
Output information about a specific build-time option, then exit. This
 
91
functionality is intended for use in scripts such as <b>RunTest</b>. The
 
92
following options output the value indicated:
 
93
<pre>
 
94
  linksize   the internal link size (2, 3, or 4)
 
95
  newline    the default newline setting:
 
96
               CR, LF, CRLF, ANYCRLF, or ANY
 
97
</pre>
 
98
The following options output 1 for true or zero for false:
 
99
<pre>
 
100
  jit        just-in-time support is available
 
101
  pcre16     the 16-bit library was built
 
102
  pcre8      the 8-bit library was built
 
103
  ucp        Unicode property support is available
 
104
  utf        UTF-8 and/or UTF-16 support is available
 
105
</PRE>
57
106
</P>
58
107
<P>
59
108
<b>-d</b>
60
 
Behave as if each regex has the <b>/D</b> (debug) modifier; the internal
 
109
Behave as if each pattern has the <b>/D</b> (debug) modifier; the internal
61
110
form and information about the compiled pattern is output after compilation;
62
111
<b>-d</b> is equivalent to <b>-b -i</b>.
63
112
</P>
64
113
<P>
65
114
<b>-dfa</b>
66
115
Behave as if each data line contains the \D escape sequence; this causes the
67
 
alternative matching function, <b>pcre_dfa_exec()</b>, to be used instead of the
68
 
standard <b>pcre_exec()</b> function (more detail is given below).
 
116
alternative matching function, <b>pcre[16]_dfa_exec()</b>, to be used instead of
 
117
the standard <b>pcre[16]_exec()</b> function (more detail is given below).
69
118
</P>
70
119
<P>
71
120
<b>-help</b>
73
122
</P>
74
123
<P>
75
124
<b>-i</b>
76
 
Behave as if each regex has the <b>/I</b> modifier; information about the
 
125
Behave as if each pattern has the <b>/I</b> modifier; information about the
77
126
compiled pattern is given after compilation.
78
127
</P>
79
128
<P>
80
129
<b>-M</b>
81
130
Behave as if each data line contains the \M escape sequence; this causes
82
131
PCRE to discover the minimum MATCH_LIMIT and MATCH_LIMIT_RECURSION settings by
83
 
calling <b>pcre_exec()</b> repeatedly with different limits.
 
132
calling <b>pcre[16]_exec()</b> repeatedly with different limits.
84
133
</P>
85
134
<P>
86
135
<b>-m</b>
87
136
Output the size of each compiled pattern after it has been compiled. This is
88
 
equivalent to adding <b>/M</b> to each regular expression. For compatibility
89
 
with earlier versions of pcretest, <b>-s</b> is a synonym for <b>-m</b>.
 
137
equivalent to adding <b>/M</b> to each regular expression. The size is given in
 
138
bytes for both libraries.
90
139
</P>
91
140
<P>
92
141
<b>-o</b> <i>osize</i>
93
142
Set the number of elements in the output vector that is used when calling
94
 
<b>pcre_exec()</b> or <b>pcre_dfa_exec()</b> to be <i>osize</i>. The default value
95
 
is 45, which is enough for 14 capturing subexpressions for <b>pcre_exec()</b> or
96
 
22 different matches for <b>pcre_dfa_exec()</b>. The vector size can be
97
 
changed for individual matching calls by including \O in the data line (see
98
 
below).
 
143
<b>pcre[16]_exec()</b> or <b>pcre[16]_dfa_exec()</b> to be <i>osize</i>. The
 
144
default value is 45, which is enough for 14 capturing subexpressions for
 
145
<b>pcre[16]_exec()</b> or 22 different matches for <b>pcre[16]_dfa_exec()</b>.
 
146
The vector size can be changed for individual matching calls by including \O
 
147
in the data line (see below).
99
148
</P>
100
149
<P>
101
150
<b>-p</b>
102
 
Behave as if each regex has the <b>/P</b> modifier; the POSIX wrapper API is
 
151
Behave as if each pattern has the <b>/P</b> modifier; the POSIX wrapper API is
103
152
used to call PCRE. None of the other options has any effect when <b>-p</b> is
104
 
set.
 
153
set. This option can be used only with the 8-bit library.
105
154
</P>
106
155
<P>
107
156
<b>-q</b>
109
158
</P>
110
159
<P>
111
160
<b>-S</b> <i>size</i>
112
 
On Unix-like systems, set the size of the runtime stack to <i>size</i>
 
161
On Unix-like systems, set the size of the run-time stack to <i>size</i>
113
162
megabytes.
114
163
</P>
115
164
<P>
 
165
<b>-s</b> or <b>-s+</b>
 
166
Behave as if each pattern has the <b>/S</b> modifier; in other words, force each
 
167
pattern to be studied. If <b>-s+</b> is used, the PCRE_STUDY_JIT_COMPILE flag is
 
168
passed to <b>pcre[16]_study()</b>, causing just-in-time optimization to be set
 
169
up if it is available. If the <b>/I</b> or <b>/D</b> option is present on a
 
170
pattern (requesting output about the compiled pattern), information about the
 
171
result of studying is not included when studying is caused only by <b>-s</b> and
 
172
neither <b>-i</b> nor <b>-d</b> is present on the command line. This behaviour
 
173
means that the output from tests that are run with and without <b>-s</b> should
 
174
be identical, except when options that output information about the actual
 
175
running of a match are set.
 
176
<br>
 
177
<br>
 
178
The <b>-M</b>, <b>-t</b>, and <b>-tm</b> options, which give information about
 
179
resources used, are likely to produce different output with and without
 
180
<b>-s</b>. Output may also differ if the <b>/C</b> option is present on an
 
181
individual pattern. This uses callouts to trace the the matching process, and
 
182
this may be different between studied and non-studied patterns. If the pattern
 
183
contains (*MARK) items there may also be differences, for the same reason. The
 
184
<b>-s</b> command line option can be overridden for specific patterns that
 
185
should never be studied (see the <b>/S</b> pattern modifier below).
 
186
</P>
 
187
<P>
116
188
<b>-t</b>
117
189
Run each compile, study, and match many times with a timer, and output
118
190
resulting time per compile or match (in milliseconds). Do not set <b>-m</b> with
127
199
This is like <b>-t</b> except that it times only the matching phase, not the
128
200
compile or study phases.
129
201
</P>
130
 
<br><a name="SEC3" href="#TOC1">DESCRIPTION</a><br>
 
202
<br><a name="SEC4" href="#TOC1">DESCRIPTION</a><br>
131
203
<P>
132
204
If <b>pcretest</b> is given two filename arguments, it reads from the first and
133
205
writes to the second. If it is given only one filename argument, it reads from
184
256
is interpreted as the first line of a pattern that starts with "abc/", causing
185
257
pcretest to read the next line as a continuation of the regular expression.
186
258
</P>
187
 
<br><a name="SEC4" href="#TOC1">PATTERN MODIFIERS</a><br>
 
259
<br><a name="SEC5" href="#TOC1">PATTERN MODIFIERS</a><br>
188
260
<P>
189
261
A pattern may be followed by any number of modifiers, which are mostly single
190
262
characters. Following Perl usage, these are referred to below as, for example,
191
263
"the <b>/i</b> modifier", even though the delimiter of the pattern need not
192
 
always be a slash, and no slash is used when writing modifiers. Whitespace may
 
264
always be a slash, and no slash is used when writing modifiers. White space may
193
265
appear between the final pattern delimiter and the first modifier, and between
194
266
the modifiers themselves.
195
267
</P>
196
268
<P>
197
269
The <b>/i</b>, <b>/m</b>, <b>/s</b>, and <b>/x</b> modifiers set the PCRE_CASELESS,
198
270
PCRE_MULTILINE, PCRE_DOTALL, or PCRE_EXTENDED options, respectively, when
199
 
<b>pcre_compile()</b> is called. These four modifier letters have the same
 
271
<b>pcre[16]_compile()</b> is called. These four modifier letters have the same
200
272
effect as they do in Perl. For example:
201
273
<pre>
202
274
  /caseless/i
204
276
The following table shows additional modifiers for setting PCRE compile-time
205
277
options that do not correspond to anything in Perl:
206
278
<pre>
207
 
  <b>/8</b>              PCRE_UTF8
208
 
  <b>/?</b>              PCRE_NO_UTF8_CHECK
 
279
  <b>/8</b>              PCRE_UTF8           ) when using the 8-bit
 
280
  <b>/?</b>              PCRE_NO_UTF8_CHECK  )   library
 
281
 
 
282
  <b>/8</b>              PCRE_UTF16          ) when using the 16-bit
 
283
  <b>/?</b>              PCRE_NO_UTF16_CHECK )   library
 
284
 
209
285
  <b>/A</b>              PCRE_ANCHORED
210
286
  <b>/C</b>              PCRE_AUTO_CALLOUT
211
287
  <b>/E</b>              PCRE_DOLLAR_ENDONLY
226
302
  <b>/&#60;bsr_unicode&#62;</b>  PCRE_BSR_UNICODE
227
303
</pre>
228
304
The modifiers that are enclosed in angle brackets are literal strings as shown,
229
 
including the angle brackets, but the letters can be in either case. This
230
 
example sets multiline matching with CRLF as the line ending sequence:
 
305
including the angle brackets, but the letters within can be in either case.
 
306
This example sets multiline matching with CRLF as the line ending sequence:
231
307
<pre>
232
 
  /^abc/m&#60;crlf&#62;
 
308
  /^abc/m&#60;CRLF&#62;
233
309
</pre>
234
 
As well as turning on the PCRE_UTF8 option, the <b>/8</b> modifier also causes
235
 
any non-printing characters in output strings to be printed using the
236
 
\x{hh...} notation if they are valid UTF-8 sequences. Full details of the PCRE
237
 
options are given in the
 
310
As well as turning on the PCRE_UTF8/16 option, the <b>/8</b> modifier causes
 
311
all non-printing characters in output strings to be printed using the
 
312
\x{hh...} notation. Otherwise, those less than 0x100 are output in hex without
 
313
the curly brackets.
 
314
</P>
 
315
<P>
 
316
Full details of the PCRE options are given in the
238
317
<a href="pcreapi.html"><b>pcreapi</b></a>
239
318
documentation.
240
319
</P>
246
325
by the <b>/g</b> or <b>/G</b> modifier. After finding a match, PCRE is called
247
326
again to search the remainder of the subject string. The difference between
248
327
<b>/g</b> and <b>/G</b> is that the former uses the <i>startoffset</i> argument to
249
 
<b>pcre_exec()</b> to start searching at a new point within the entire string
250
 
(which is in effect what Perl does), whereas the latter passes over a shortened
251
 
substring. This makes a difference to the matching process if the pattern
252
 
begins with a lookbehind assertion (including \b or \B).
 
328
<b>pcre[16]_exec()</b> to start searching at a new point within the entire
 
329
string (which is in effect what Perl does), whereas the latter passes over a
 
330
shortened substring. This makes a difference to the matching process if the
 
331
pattern begins with a lookbehind assertion (including \b or \B).
253
332
</P>
254
333
<P>
255
 
If any call to <b>pcre_exec()</b> in a <b>/g</b> or <b>/G</b> sequence matches an
256
 
empty string, the next call is done with the PCRE_NOTEMPTY_ATSTART and
 
334
If any call to <b>pcre[16]_exec()</b> in a <b>/g</b> or <b>/G</b> sequence matches
 
335
an empty string, the next call is done with the PCRE_NOTEMPTY_ATSTART and
257
336
PCRE_ANCHORED flags set in order to search for another, non-empty, match at the
258
337
same point. If this second match fails, the start offset is advanced, and the
259
338
normal match is retried. This imitates the way Perl handles such cases when
271
350
</P>
272
351
<P>
273
352
The <b>/+</b> modifier requests that as well as outputting the substring that
274
 
matched the entire pattern, pcretest should in addition output the remainder of
275
 
the subject string. This is useful for tests where the subject contains
276
 
multiple copies of the same substring.
 
353
matched the entire pattern, <b>pcretest</b> should in addition output the
 
354
remainder of the subject string. This is useful for tests where the subject
 
355
contains multiple copies of the same substring. If the <b>+</b> modifier appears
 
356
twice, the same action is taken for captured substrings. In each case the
 
357
remainder is output on the following line with a plus character following the
 
358
capture number. Note that this modifier must not immediately follow the /S
 
359
modifier because /S+ has another meaning.
 
360
</P>
 
361
<P>
 
362
The <b>/=</b> modifier requests that the values of all potential captured
 
363
parentheses be output after a match. By default, only those up to the highest
 
364
one actually used in the match are output (corresponding to the return code
 
365
from <b>pcre[16]_exec()</b>). Values in the offsets vector corresponding to
 
366
higher numbers should be set to -1, and these are output as "&#60;unset&#62;". This
 
367
modifier gives a way of checking that this is happening.
277
368
</P>
278
369
<P>
279
370
The <b>/B</b> modifier is a debugging feature. It requests that <b>pcretest</b>
280
 
output a representation of the compiled byte code after compilation. Normally
281
 
this information contains length and offset values; however, if <b>/Z</b> is
282
 
also present, this data is replaced by spaces. This is a special feature for
283
 
use in the automatic test scripts; it ensures that the same output is generated
284
 
for different internal link sizes.
 
371
output a representation of the compiled code after compilation. Normally this
 
372
information contains length and offset values; however, if <b>/Z</b> is also
 
373
present, this data is replaced by spaces. This is a special feature for use in
 
374
the automatic test scripts; it ensures that the same output is generated for
 
375
different internal link sizes.
285
376
</P>
286
377
<P>
287
378
The <b>/D</b> modifier is a PCRE debugging feature, and is equivalent to
289
380
</P>
290
381
<P>
291
382
The <b>/F</b> modifier causes <b>pcretest</b> to flip the byte order of the
292
 
fields in the compiled pattern that contain 2-byte and 4-byte numbers. This
293
 
facility is for testing the feature in PCRE that allows it to execute patterns
294
 
that were compiled on a host with a different endianness. This feature is not
295
 
available when the POSIX interface to PCRE is being used, that is, when the
296
 
<b>/P</b> pattern modifier is specified. See also the section about saving and
297
 
reloading compiled patterns below.
 
383
2-byte and 4-byte fields in the compiled pattern. This facility is for testing
 
384
the feature in PCRE that allows it to execute patterns that were compiled on a
 
385
host with a different endianness. This feature is not available when the POSIX
 
386
interface to PCRE is being used, that is, when the <b>/P</b> pattern modifier is
 
387
specified. See also the section about saving and reloading compiled patterns
 
388
below.
298
389
</P>
299
390
<P>
300
391
The <b>/I</b> modifier requests that <b>pcretest</b> output information about the
301
392
compiled pattern (whether it is anchored, has a fixed first character, and
302
 
so on). It does this by calling <b>pcre_fullinfo()</b> after compiling a
 
393
so on). It does this by calling <b>pcre[16]_fullinfo()</b> after compiling a
303
394
pattern. If the pattern is studied, the results of that are also output.
304
395
</P>
305
396
<P>
306
397
The <b>/K</b> modifier requests <b>pcretest</b> to show names from backtracking
307
 
control verbs that are returned from calls to <b>pcre_exec()</b>. It causes
308
 
<b>pcretest</b> to create a <b>pcre_extra</b> block if one has not already been
309
 
created by a call to <b>pcre_study()</b>, and to set the PCRE_EXTRA_MARK flag
310
 
and the <b>mark</b> field within it, every time that <b>pcre_exec()</b> is
311
 
called. If the variable that the <b>mark</b> field points to is non-NULL for a
312
 
match, non-match, or partial match, <b>pcretest</b> prints the string to which
313
 
it points. For a match, this is shown on a line by itself, tagged with "MK:".
314
 
For a non-match it is added to the message.
 
398
control verbs that are returned from calls to <b>pcre[16]_exec()</b>. It causes
 
399
<b>pcretest</b> to create a <b>pcre[16]_extra</b> block if one has not already
 
400
been created by a call to <b>pcre[16]_study()</b>, and to set the
 
401
PCRE_EXTRA_MARK flag and the <b>mark</b> field within it, every time that
 
402
<b>pcre[16]_exec()</b> is called. If the variable that the <b>mark</b> field
 
403
points to is non-NULL for a match, non-match, or partial match, <b>pcretest</b>
 
404
prints the string to which it points. For a match, this is shown on a line by
 
405
itself, tagged with "MK:". For a non-match it is added to the message.
315
406
</P>
316
407
<P>
317
408
The <b>/L</b> modifier must be followed directly by the name of a locale, for
320
411
  /pattern/Lfr_FR
321
412
</pre>
322
413
For this reason, it must be the last modifier. The given locale is set,
323
 
<b>pcre_maketables()</b> is called to build a set of character tables for the
324
 
locale, and this is then passed to <b>pcre_compile()</b> when compiling the
325
 
regular expression. Without an <b>/L</b> (or <b>/T</b>) modifier, NULL is passed
326
 
as the tables pointer; that is, <b>/L</b> applies only to the expression on
327
 
which it appears.
328
 
</P>
329
 
<P>
330
 
The <b>/M</b> modifier causes the size of memory block used to hold the compiled
331
 
pattern to be output.
332
 
</P>
333
 
<P>
334
 
The <b>/S</b> modifier causes <b>pcre_study()</b> to be called after the
335
 
expression has been compiled, and the results used when the expression is
336
 
matched.
 
414
<b>pcre[16]_maketables()</b> is called to build a set of character tables for
 
415
the locale, and this is then passed to <b>pcre[16]_compile()</b> when compiling
 
416
the regular expression. Without an <b>/L</b> (or <b>/T</b>) modifier, NULL is
 
417
passed as the tables pointer; that is, <b>/L</b> applies only to the expression
 
418
on which it appears.
 
419
</P>
 
420
<P>
 
421
The <b>/M</b> modifier causes the size in bytes of the memory block used to hold
 
422
the compiled pattern to be output. This does not include the size of the
 
423
<b>pcre[16]</b> block; it is just the actual compiled data. If the pattern is
 
424
successfully studied with the PCRE_STUDY_JIT_COMPILE option, the size of the
 
425
JIT compiled code is also output.
 
426
</P>
 
427
<P>
 
428
If the <b>/S</b> modifier appears once, it causes <b>pcre[16]_study()</b> to be
 
429
called after the expression has been compiled, and the results used when the
 
430
expression is matched. If <b>/S</b> appears twice, it suppresses studying, even
 
431
if it was requested externally by the <b>-s</b> command line option. This makes
 
432
it possible to specify that certain patterns are always studied, and others are
 
433
never studied, independently of <b>-s</b>. This feature is used in the test
 
434
files in a few cases where the output is different when the pattern is studied.
 
435
</P>
 
436
<P>
 
437
If the <b>/S</b> modifier is immediately followed by a + character, the call to
 
438
<b>pcre[16]_study()</b> is made with the PCRE_STUDY_JIT_COMPILE option,
 
439
requesting just-in-time optimization support if it is available. Note that
 
440
there is also a <b>/+</b> modifier; it must not be given immediately after
 
441
<b>/S</b> because this will be misinterpreted. If JIT studying is successful, it
 
442
will automatically be used when <b>pcre[16]_exec()</b> is run, except when
 
443
incompatible run-time options are specified. These include the partial matching
 
444
options; a complete list is given in the
 
445
<a href="pcrejit.html"><b>pcrejit</b></a>
 
446
documentation. See also the <b>\J</b> escape sequence below for a way of
 
447
setting the size of the JIT stack.
337
448
</P>
338
449
<P>
339
450
The <b>/T</b> modifier must be followed by a single digit. It causes a specific
340
 
set of built-in character tables to be passed to <b>pcre_compile()</b>. It is
341
 
used in the standard PCRE tests to check behaviour with different character
 
451
set of built-in character tables to be passed to <b>pcre[16]_compile()</b>. It
 
452
is used in the standard PCRE tests to check behaviour with different character
342
453
tables. The digit specifies the tables as follows:
343
454
<pre>
344
455
  0   the default ASCII tables, as distributed in
353
464
</b><br>
354
465
<P>
355
466
The <b>/P</b> modifier causes <b>pcretest</b> to call PCRE via the POSIX wrapper
356
 
API rather than its native API. When <b>/P</b> is set, the following modifiers
357
 
set options for the <b>regcomp()</b> function:
 
467
API rather than its native API. This supports only the 8-bit library. When
 
468
<b>/P</b> is set, the following modifiers set options for the <b>regcomp()</b>
 
469
function:
358
470
<pre>
359
471
  /i    REG_ICASE
360
472
  /m    REG_NEWLINE
367
479
The <b>/+</b> modifier works as described above. All other modifiers are
368
480
ignored.
369
481
</P>
370
 
<br><a name="SEC5" href="#TOC1">DATA LINES</a><br>
 
482
<br><a name="SEC6" href="#TOC1">DATA LINES</a><br>
371
483
<P>
372
 
Before each data line is passed to <b>pcre_exec()</b>, leading and trailing
373
 
whitespace is removed, and it is then scanned for \ escapes. Some of these are
374
 
pretty esoteric features, intended for checking out some of the more
 
484
Before each data line is passed to <b>pcre[16]_exec()</b>, leading and trailing
 
485
white space is removed, and it is then scanned for \ escapes. Some of these
 
486
are pretty esoteric features, intended for checking out some of the more
375
487
complicated features of PCRE. If you are just testing "ordinary" regular
376
488
expressions, you probably don't need any of these. The following escapes are
377
489
recognized:
379
491
  \a         alarm (BEL, \x07)
380
492
  \b         backspace (\x08)
381
493
  \e         escape (\x27)
382
 
  \f         formfeed (\x0c)
 
494
  \f         form feed (\x0c)
383
495
  \n         newline (\x0a)
384
496
  \qdd       set the PCRE_MATCH_LIMIT limit to dd (any number of digits)
385
497
  \r         carriage return (\x0d)
386
498
  \t         tab (\x09)
387
499
  \v         vertical tab (\x0b)
388
 
  \nnn       octal character (up to 3 octal digits)
389
 
               always a byte unless &#62; 255 in UTF-8 mode
 
500
  \nnn       octal character (up to 3 octal digits); always
 
501
               a byte unless &#62; 255 in UTF-8 or 16-bit mode
390
502
  \xhh       hexadecimal byte (up to 2 hex digits)
391
 
  \x{hh...}  hexadecimal character, any number of digits in UTF-8 mode
392
 
  \A         pass the PCRE_ANCHORED option to <b>pcre_exec()</b> or <b>pcre_dfa_exec()</b>
393
 
  \B         pass the PCRE_NOTBOL option to <b>pcre_exec()</b> or <b>pcre_dfa_exec()</b>
394
 
  \Cdd       call pcre_copy_substring() for substring dd after a successful match (number less than 32)
395
 
  \Cname     call pcre_copy_named_substring() for substring "name" after a successful match (name termin-
 
503
  \x{hh...}  hexadecimal character (any number of hex digits)
 
504
  \A         pass the PCRE_ANCHORED option to <b>pcre[16]_exec()</b> or <b>pcre[16]_dfa_exec()</b>
 
505
  \B         pass the PCRE_NOTBOL option to <b>pcre[16]_exec()</b> or <b>pcre[16]_dfa_exec()</b>
 
506
  \Cdd       call pcre[16]_copy_substring() for substring dd after a successful match (number less than 32)
 
507
  \Cname     call pcre[16]_copy_named_substring() for substring "name" after a successful match (name termin-
396
508
               ated by next non alphanumeric character)
397
509
  \C+        show the current captured substrings at callout time
398
510
  \C-        do not supply a callout function
399
511
  \C!n       return 1 instead of 0 when callout number n is reached
400
512
  \C!n!m     return 1 instead of 0 when callout number n is reached for the nth time
401
513
  \C*n       pass the number n (may be negative) as callout data; this is used as the callout return value
402
 
  \D         use the <b>pcre_dfa_exec()</b> match function
403
 
  \F         only shortest match for <b>pcre_dfa_exec()</b>
404
 
  \Gdd       call pcre_get_substring() for substring dd after a successful match (number less than 32)
405
 
  \Gname     call pcre_get_named_substring() for substring "name" after a successful match (name termin-
 
514
  \D         use the <b>pcre[16]_dfa_exec()</b> match function
 
515
  \F         only shortest match for <b>pcre[16]_dfa_exec()</b>
 
516
  \Gdd       call pcre[16]_get_substring() for substring dd after a successful match (number less than 32)
 
517
  \Gname     call pcre[16]_get_named_substring() for substring "name" after a successful match (name termin-
406
518
               ated by next non-alphanumeric character)
407
 
  \L         call pcre_get_substringlist() after a successful match
 
519
  \Jdd       set up a JIT stack of dd kilobytes maximum (any number of digits)
 
520
  \L         call pcre[16]_get_substringlist() after a successful match
408
521
  \M         discover the minimum MATCH_LIMIT and MATCH_LIMIT_RECURSION settings
409
 
  \N         pass the PCRE_NOTEMPTY option to <b>pcre_exec()</b> or <b>pcre_dfa_exec()</b>; if used twice, pass the
 
522
  \N         pass the PCRE_NOTEMPTY option to <b>pcre[16]_exec()</b> or <b>pcre[16]_dfa_exec()</b>; if used twice, pass the
410
523
               PCRE_NOTEMPTY_ATSTART option
411
 
  \Odd       set the size of the output vector passed to <b>pcre_exec()</b> to dd (any number of digits)
412
 
  \P         pass the PCRE_PARTIAL_SOFT option to <b>pcre_exec()</b> or <b>pcre_dfa_exec()</b>; if used twice, pass the
 
524
  \Odd       set the size of the output vector passed to <b>pcre[16]_exec()</b> to dd (any number of digits)
 
525
  \P         pass the PCRE_PARTIAL_SOFT option to <b>pcre[16]_exec()</b> or <b>pcre[16]_dfa_exec()</b>; if used twice, pass the
413
526
               PCRE_PARTIAL_HARD option
414
527
  \Qdd       set the PCRE_MATCH_LIMIT_RECURSION limit to dd (any number of digits)
415
 
  \R         pass the PCRE_DFA_RESTART option to <b>pcre_dfa_exec()</b>
 
528
  \R         pass the PCRE_DFA_RESTART option to <b>pcre[16]_dfa_exec()</b>
416
529
  \S         output details of memory get/free calls during matching
417
 
  \Y         pass the PCRE_NO_START_OPTIMIZE option to <b>pcre_exec()</b> or <b>pcre_dfa_exec()</b>
418
 
  \Z         pass the PCRE_NOTEOL option to <b>pcre_exec()</b> or <b>pcre_dfa_exec()</b>
419
 
  \?         pass the PCRE_NO_UTF8_CHECK option to <b>pcre_exec()</b> or <b>pcre_dfa_exec()</b>
 
530
  \Y         pass the PCRE_NO_START_OPTIMIZE option to <b>pcre[16]_exec()</b> or <b>pcre[16]_dfa_exec()</b>
 
531
  \Z         pass the PCRE_NOTEOL option to <b>pcre[16]_exec()</b> or <b>pcre[16]_dfa_exec()</b>
 
532
  \?         pass the PCRE_NO_UTF[8|16]_CHECK option to <b>pcre[16]_exec()</b> or <b>pcre[16]_dfa_exec()</b>
420
533
  \&#62;dd       start the match at offset dd (optional "-"; then any number of digits); this sets the <i>startoffset</i>
421
 
               argument for <b>pcre_exec()</b> or <b>pcre_dfa_exec()</b>
422
 
  \&#60;cr&#62;      pass the PCRE_NEWLINE_CR option to <b>pcre_exec()</b> or <b>pcre_dfa_exec()</b>
423
 
  \&#60;lf&#62;      pass the PCRE_NEWLINE_LF option to <b>pcre_exec()</b> or <b>pcre_dfa_exec()</b>
424
 
  \&#60;crlf&#62;    pass the PCRE_NEWLINE_CRLF option to <b>pcre_exec()</b> or <b>pcre_dfa_exec()</b>
425
 
  \&#60;anycrlf&#62; pass the PCRE_NEWLINE_ANYCRLF option to <b>pcre_exec()</b> or <b>pcre_dfa_exec()</b>
426
 
  \&#60;any&#62;     pass the PCRE_NEWLINE_ANY option to <b>pcre_exec()</b> or <b>pcre_dfa_exec()</b>
 
534
               argument for <b>pcre[16]_exec()</b> or <b>pcre[16]_dfa_exec()</b>
 
535
  \&#60;cr&#62;      pass the PCRE_NEWLINE_CR option to <b>pcre[16]_exec()</b> or <b>pcre[16]_dfa_exec()</b>
 
536
  \&#60;lf&#62;      pass the PCRE_NEWLINE_LF option to <b>pcre[16]_exec()</b> or <b>pcre[16]_dfa_exec()</b>
 
537
  \&#60;crlf&#62;    pass the PCRE_NEWLINE_CRLF option to <b>pcre[16]_exec()</b> or <b>pcre[16]_dfa_exec()</b>
 
538
  \&#60;anycrlf&#62; pass the PCRE_NEWLINE_ANYCRLF option to <b>pcre[16]_exec()</b> or <b>pcre[16]_dfa_exec()</b>
 
539
  \&#60;any&#62;     pass the PCRE_NEWLINE_ANY option to <b>pcre[16]_exec()</b> or <b>pcre[16]_dfa_exec()</b>
427
540
</pre>
428
 
Note that \xhh always specifies one byte, even in UTF-8 mode; this makes it
429
 
possible to construct invalid UTF-8 sequences for testing purposes. On the
430
 
other hand, \x{hh} is interpreted as a UTF-8 character in UTF-8 mode,
431
 
generating more than one byte if the value is greater than 127. When not in
432
 
UTF-8 mode, it generates one byte for values less than 256, and causes an error
433
 
for greater values.
 
541
The use of \x{hh...} is not dependent on the use of the <b>/8</b> modifier on
 
542
the pattern. It is recognized always. There may be any number of hexadecimal
 
543
digits inside the braces; invalid values provoke error messages.
 
544
</P>
 
545
<P>
 
546
Note that \xhh specifies one byte rather than one character in UTF-8 mode;
 
547
this makes it possible to construct invalid UTF-8 sequences for testing
 
548
purposes. On the other hand, \x{hh} is interpreted as a UTF-8 character in
 
549
UTF-8 mode, generating more than one byte if the value is greater than 127.
 
550
When testing the 8-bit library not in UTF-8 mode, \x{hh} generates one byte
 
551
for values less than 256, and causes an error for greater values.
 
552
</P>
 
553
<P>
 
554
In UTF-16 mode, all 4-digit \x{hhhh} values are accepted. This makes it
 
555
possible to construct invalid UTF-16 sequences for testing purposes.
434
556
</P>
435
557
<P>
436
558
The escapes that specify line ending sequences are literal strings, exactly as
443
565
input.
444
566
</P>
445
567
<P>
446
 
If \M is present, <b>pcretest</b> calls <b>pcre_exec()</b> several times, with
447
 
different values in the <i>match_limit</i> and <i>match_limit_recursion</i>
448
 
fields of the <b>pcre_extra</b> data structure, until it finds the minimum
449
 
numbers for each parameter that allow <b>pcre_exec()</b> to complete. The
450
 
<i>match_limit</i> number is a measure of the amount of backtracking that takes
451
 
place, and checking it out can be instructive. For most simple matches, the
452
 
number is quite small, but for patterns with very large numbers of matching
453
 
possibilities, it can become large very quickly with increasing length of
454
 
subject string. The <i>match_limit_recursion</i> number is a measure of how much
455
 
stack (or, if PCRE is compiled with NO_RECURSE, how much heap) memory is needed
456
 
to complete the match attempt.
 
568
The <b>\J</b> escape provides a way of setting the maximum stack size that is
 
569
used by the just-in-time optimization code. It is ignored if JIT optimization
 
570
is not being used. Providing a stack that is larger than the default 32K is
 
571
necessary only for very complicated patterns.
 
572
</P>
 
573
<P>
 
574
If \M is present, <b>pcretest</b> calls <b>pcre[16]_exec()</b> several times,
 
575
with different values in the <i>match_limit</i> and <i>match_limit_recursion</i>
 
576
fields of the <b>pcre[16]_extra</b> data structure, until it finds the minimum
 
577
numbers for each parameter that allow <b>pcre[16]_exec()</b> to complete without
 
578
error. Because this is testing a specific feature of the normal interpretive
 
579
<b>pcre[16]_exec()</b> execution, the use of any JIT optimization that might
 
580
have been set up by the <b>/S+</b> qualifier of <b>-s+</b> option is disabled.
 
581
</P>
 
582
<P>
 
583
The <i>match_limit</i> number is a measure of the amount of backtracking
 
584
that takes place, and checking it out can be instructive. For most simple
 
585
matches, the number is quite small, but for patterns with very large numbers of
 
586
matching possibilities, it can become large very quickly with increasing length
 
587
of subject string. The <i>match_limit_recursion</i> number is a measure of how
 
588
much stack (or, if PCRE is compiled with NO_RECURSE, how much heap) memory is
 
589
needed to complete the match attempt.
457
590
</P>
458
591
<P>
459
592
When \O is used, the value specified may be higher or lower than the size set
460
593
by the <b>-O</b> command line option (or defaulted to 45); \O applies only to
461
 
the call of <b>pcre_exec()</b> for the line in which it appears.
 
594
the call of <b>pcre[16]_exec()</b> for the line in which it appears.
462
595
</P>
463
596
<P>
464
597
If the <b>/P</b> modifier was present on the pattern, causing the POSIX wrapper
466
599
\N, and \Z, causing REG_NOTBOL, REG_NOTEMPTY, and REG_NOTEOL, respectively,
467
600
to be passed to <b>regexec()</b>.
468
601
</P>
469
 
<P>
470
 
The use of \x{hh...} to represent UTF-8 characters is not dependent on the use
471
 
of the <b>/8</b> modifier on the pattern. It is recognized always. There may be
472
 
any number of hexadecimal digits inside the braces. The result is from one to
473
 
six bytes, encoded according to the original UTF-8 rules of RFC 2279. This
474
 
allows for values in the range 0 to 0x7FFFFFFF. Note that not all of those are
475
 
valid Unicode code points, or indeed valid UTF-8 characters according to the
476
 
later rules in RFC 3629.
477
 
</P>
478
 
<br><a name="SEC6" href="#TOC1">THE ALTERNATIVE MATCHING FUNCTION</a><br>
 
602
<br><a name="SEC7" href="#TOC1">THE ALTERNATIVE MATCHING FUNCTION</a><br>
479
603
<P>
480
604
By default, <b>pcretest</b> uses the standard PCRE matching function,
481
 
<b>pcre_exec()</b> to match each data line. From release 6.0, PCRE supports an
482
 
alternative matching function, <b>pcre_dfa_test()</b>, which operates in a
 
605
<b>pcre[16]_exec()</b> to match each data line. PCRE also supports an
 
606
alternative matching function, <b>pcre[16]_dfa_test()</b>, which operates in a
483
607
different way, and has some restrictions. The differences between the two
484
608
functions are described in the
485
609
<a href="pcrematching.html"><b>pcrematching</b></a>
487
611
</P>
488
612
<P>
489
613
If a data line contains the \D escape sequence, or if the command line
490
 
contains the <b>-dfa</b> option, the alternative matching function is called.
 
614
contains the <b>-dfa</b> option, the alternative matching function is used.
491
615
This function finds all possible matches at a given point. If, however, the \F
492
616
escape sequence is present in the data line, it stops after the first match is
493
617
found. This is always the shortest possible match.
494
618
</P>
495
 
<br><a name="SEC7" href="#TOC1">DEFAULT OUTPUT FROM PCRETEST</a><br>
 
619
<br><a name="SEC8" href="#TOC1">DEFAULT OUTPUT FROM PCRETEST</a><br>
496
620
<P>
497
621
This section describes the output when the normal matching function,
498
 
<b>pcre_exec()</b>, is being used.
 
622
<b>pcre[16]_exec()</b>, is being used.
499
623
</P>
500
624
<P>
501
 
When a match succeeds, pcretest outputs the list of captured substrings that
502
 
<b>pcre_exec()</b> returns, starting with number 0 for the string that matched
503
 
the whole pattern. Otherwise, it outputs "No match" when the return is
 
625
When a match succeeds, <b>pcretest</b> outputs the list of captured substrings
 
626
that <b>pcre[16]_exec()</b> returns, starting with number 0 for the string that
 
627
matched the whole pattern. Otherwise, it outputs "No match" when the return is
504
628
PCRE_ERROR_NOMATCH, and "Partial match:" followed by the partially matching
505
 
substring when <b>pcre_exec()</b> returns PCRE_ERROR_PARTIAL. (Note that this is
506
 
the entire substring that was inspected during the partial match; it may
507
 
include characters before the actual match start if a lookbehind assertion,
508
 
\K, \b, or \B was involved.) For any other returns, it outputs the PCRE
509
 
negative error number. Here is an example of an interactive <b>pcretest</b> run.
 
629
substring when <b>pcre[16]_exec()</b> returns PCRE_ERROR_PARTIAL. (Note that
 
630
this is the entire substring that was inspected during the partial match; it
 
631
may include characters before the actual match start if a lookbehind assertion,
 
632
\K, \b, or \B was involved.) For any other return, <b>pcretest</b> outputs
 
633
the PCRE negative error number and a short descriptive phrase. If the error is
 
634
a failed UTF string check, the offset of the start of the failing character and
 
635
the reason code are also output, provided that the size of the output vector is
 
636
at least two. Here is an example of an interactive <b>pcretest</b> run.
510
637
<pre>
511
638
  $ pcretest
512
 
  PCRE version 7.0 30-Nov-2006
 
639
  PCRE version 8.13 2011-04-30
513
640
 
514
641
    re&#62; /^abc(\d+)/
515
642
  data&#62; abc123
518
645
  data&#62; xyz
519
646
  No match
520
647
</pre>
521
 
Note that unset capturing substrings that are not followed by one that is set
522
 
are not returned by <b>pcre_exec()</b>, and are not shown by <b>pcretest</b>. In
523
 
the following example, there are two capturing substrings, but when the first
524
 
data line is matched, the second, unset substring is not shown. An "internal"
525
 
unset substring is shown as "&#60;unset&#62;", as for the second data line.
 
648
Unset capturing substrings that are not followed by one that is set are not
 
649
returned by <b>pcre[16]_exec()</b>, and are not shown by <b>pcretest</b>. In the
 
650
following example, there are two capturing substrings, but when the first data
 
651
line is matched, the second, unset substring is not shown. An "internal" unset
 
652
substring is shown as "&#60;unset&#62;", as for the second data line.
526
653
<pre>
527
654
    re&#62; /(a)|(b)/
528
655
  data&#62; a
533
660
   1: &#60;unset&#62;
534
661
   2: b
535
662
</pre>
536
 
If the strings contain any non-printing characters, they are output as \0x
537
 
escapes, or as \x{...} escapes if the <b>/8</b> modifier was present on the
538
 
pattern. See below for the definition of non-printing characters. If the
539
 
pattern has the <b>/+</b> modifier, the output for substring 0 is followed by
540
 
the the rest of the subject string, identified by "0+" like this:
 
663
If the strings contain any non-printing characters, they are output as \xhh
 
664
escapes if the value is less than 256 and UTF mode is not set. Otherwise they
 
665
are output as \x{hh...} escapes. See below for the definition of non-printing
 
666
characters. If the pattern has the <b>/+</b> modifier, the output for substring
 
667
0 is followed by the the rest of the subject string, identified by "0+" like
 
668
this:
541
669
<pre>
542
670
    re&#62; /cat/+
543
671
  data&#62; cataract
556
684
   0: ipp
557
685
   1: pp
558
686
</pre>
559
 
"No match" is output only if the first match attempt fails.
 
687
"No match" is output only if the first match attempt fails. Here is an example
 
688
of a failure message (the offset 4 that is specified by \&#62;4 is past the end of
 
689
the subject string):
 
690
<pre>
 
691
    re&#62; /xyz/
 
692
  data&#62; xyz\&#62;4
 
693
  Error -24 (bad offset value)
 
694
</PRE>
560
695
</P>
561
696
<P>
562
697
If any of the sequences <b>\C</b>, <b>\G</b>, or <b>\L</b> are present in a
572
707
included in data by means of the \n escape (or \r, \r\n, etc., depending on
573
708
the newline sequence setting).
574
709
</P>
575
 
<br><a name="SEC8" href="#TOC1">OUTPUT FROM THE ALTERNATIVE MATCHING FUNCTION</a><br>
 
710
<br><a name="SEC9" href="#TOC1">OUTPUT FROM THE ALTERNATIVE MATCHING FUNCTION</a><br>
576
711
<P>
577
 
When the alternative matching function, <b>pcre_dfa_exec()</b>, is used (by
 
712
When the alternative matching function, <b>pcre[16]_dfa_exec()</b>, is used (by
578
713
means of the \D escape sequence or the <b>-dfa</b> command line option), the
579
714
output consists of a list of all the matches that start at the first point in
580
715
the subject where there is at least one match. For example:
608
743
Since the matching function does not support substring capture, the escape
609
744
sequences that are concerned with captured substrings are not relevant.
610
745
</P>
611
 
<br><a name="SEC9" href="#TOC1">RESTARTING AFTER A PARTIAL MATCH</a><br>
 
746
<br><a name="SEC10" href="#TOC1">RESTARTING AFTER A PARTIAL MATCH</a><br>
612
747
<P>
613
748
When the alternative matching function has given the PCRE_ERROR_PARTIAL return,
614
749
indicating that the subject partially matched the pattern, you can restart the
625
760
<a href="pcrepartial.html"><b>pcrepartial</b></a>
626
761
documentation.
627
762
</P>
628
 
<br><a name="SEC10" href="#TOC1">CALLOUTS</a><br>
 
763
<br><a name="SEC11" href="#TOC1">CALLOUTS</a><br>
629
764
<P>
630
765
If the pattern contains any callout requests, <b>pcretest</b>'s callout function
631
766
is called during matching. This works with both matching functions. By default,
632
767
the called function displays the callout number, the start and current
633
768
positions in the text at the callout time, and the next pattern item to be
634
 
tested. For example, the output
 
769
tested. For example:
635
770
<pre>
636
771
  ---&#62;pqrabcdef
637
772
    0    ^  ^     \d
638
773
</pre>
639
 
indicates that callout number 0 occurred for a match attempt starting at the
640
 
fourth character of the subject string, when the pointer was at the seventh
641
 
character of the data, and when the next pattern item was \d. Just one
642
 
circumflex is output if the start and current positions are the same.
 
774
This output indicates that callout number 0 occurred for a match attempt
 
775
starting at the fourth character of the subject string, when the pointer was at
 
776
the seventh character of the data, and when the next pattern item was \d. Just
 
777
one circumflex is output if the start and current positions are the same.
643
778
</P>
644
779
<P>
645
780
Callouts numbered 255 are assumed to be automatic callouts, inserted as a
656
791
  +10 ^ ^
657
792
   0: E*
658
793
</pre>
 
794
If a pattern contains (*MARK) items, an additional line is output whenever
 
795
a change of latest mark is passed to the callout function. For example:
 
796
<pre>
 
797
    re&#62; /a(*MARK:X)bc/C
 
798
  data&#62; abc
 
799
  ---&#62;abc
 
800
   +0 ^       a
 
801
   +1 ^^      (*MARK:X)
 
802
  +10 ^^      b
 
803
  Latest Mark: X
 
804
  +11 ^ ^     c
 
805
  +12 ^  ^
 
806
   0: abc
 
807
</pre>
 
808
The mark changes between matching "a" and "b", but stays the same for the rest
 
809
of the match, so nothing more is output. If, as a result of backtracking, the
 
810
mark reverts to being unset, the text "&#60;unset&#62;" is output.
 
811
</P>
 
812
<P>
659
813
The callout function in <b>pcretest</b> returns zero (carry on matching) by
660
814
default, but you can use a \C item in a data line (as described above) to
661
 
change this.
 
815
change this and other parameters of the callout.
662
816
</P>
663
817
<P>
664
818
Inserting callouts can be helpful when using <b>pcretest</b> to check
667
821
<a href="pcrecallout.html"><b>pcrecallout</b></a>
668
822
documentation.
669
823
</P>
670
 
<br><a name="SEC11" href="#TOC1">NON-PRINTING CHARACTERS</a><br>
 
824
<br><a name="SEC12" href="#TOC1">NON-PRINTING CHARACTERS</a><br>
671
825
<P>
672
826
When <b>pcretest</b> is outputting text in the compiled version of a pattern,
673
827
bytes other than 32-126 are always treated as non-printing characters are are
679
833
the pattern (using the <b>/L</b> modifier). In this case, the <b>isprint()</b>
680
834
function to distinguish printing and non-printing characters.
681
835
</P>
682
 
<br><a name="SEC12" href="#TOC1">SAVING AND RELOADING COMPILED PATTERNS</a><br>
 
836
<br><a name="SEC13" href="#TOC1">SAVING AND RELOADING COMPILED PATTERNS</a><br>
683
837
<P>
684
838
The facilities described in this section are not available when the POSIX
685
 
inteface to PCRE is being used, that is, when the <b>/P</b> pattern modifier is
 
839
interface to PCRE is being used, that is, when the <b>/P</b> pattern modifier is
686
840
specified.
687
841
</P>
688
842
<P>
695
849
See the
696
850
<a href="pcreprecompile.html"><b>pcreprecompile</b></a>
697
851
documentation for a discussion about saving and re-using compiled patterns.
 
852
Note that if the pattern was successfully studied with JIT optimization, the
 
853
JIT data cannot be saved.
698
854
</P>
699
855
<P>
700
856
The data that is written is binary. The first eight bytes are the length of the
703
859
there is no study data (either the pattern was not studied, or studying did not
704
860
return any data), the second length is zero. The lengths are followed by an
705
861
exact copy of the compiled pattern. If there is additional study data, this
706
 
follows immediately after the compiled pattern. After writing the file,
707
 
<b>pcretest</b> expects to read a new pattern.
 
862
(excluding any JIT data) follows immediately after the compiled pattern. After
 
863
writing the file, <b>pcretest</b> expects to read a new pattern.
708
864
</P>
709
865
<P>
710
 
A saved pattern can be reloaded into <b>pcretest</b> by specifing &#60; and a file
 
866
A saved pattern can be reloaded into <b>pcretest</b> by specifying &#60; and a file
711
867
name instead of a pattern. The name of the file must not contain a &#60; character,
712
868
as otherwise <b>pcretest</b> will interpret the line as a pattern delimited by &#60;
713
869
characters.
714
870
For example:
715
871
<pre>
716
872
   re&#62; &#60;/some/file
717
 
  Compiled regex loaded from /some/file
 
873
  Compiled pattern loaded from /some/file
718
874
  No study data
719
875
</pre>
720
 
When the pattern has been loaded, <b>pcretest</b> proceeds to read data lines in
721
 
the usual way.
 
876
If the pattern was previously studied with the JIT optimization, the JIT
 
877
information cannot be saved and restored, and so is lost. When the pattern has
 
878
been loaded, <b>pcretest</b> proceeds to read data lines in the usual way.
722
879
</P>
723
880
<P>
724
881
You can copy a file written by <b>pcretest</b> to a different host and reload it
725
882
there, even if the new host has opposite endianness to the one on which the
726
883
pattern was compiled. For example, you can compile on an i86 machine and run on
727
 
a SPARC machine.
 
884
a SPARC machine. When a pattern is reloaded on a host with different
 
885
endianness, the confirmation message is changed to:
 
886
<pre>
 
887
  Compiled pattern (byte-inverted) loaded from /some/file
 
888
</pre>
 
889
The test suite contains some saved pre-compiled patterns with different
 
890
endianness. These are reloaded using "&#60;!" instead of just "&#60;". This suppresses
 
891
the "(byte-inverted)" text so that the output is the same on all hosts. It also
 
892
forces debugging output once the pattern has been reloaded.
728
893
</P>
729
894
<P>
730
895
File names for saving and reloading can be absolute or relative, but note that
741
906
Finally, if you attempt to load a file that is not in the correct format, the
742
907
result is undefined.
743
908
</P>
744
 
<br><a name="SEC13" href="#TOC1">SEE ALSO</a><br>
 
909
<br><a name="SEC14" href="#TOC1">SEE ALSO</a><br>
745
910
<P>
746
 
<b>pcre</b>(3), <b>pcreapi</b>(3), <b>pcrecallout</b>(3), <b>pcrematching</b>(3),
747
 
<b>pcrepartial</b>(d), <b>pcrepattern</b>(3), <b>pcreprecompile</b>(3).
 
911
<b>pcre</b>(3), <b>pcre16</b>(3), <b>pcreapi</b>(3), <b>pcrecallout</b>(3),
 
912
<b>pcrejit</b>, <b>pcrematching</b>(3), <b>pcrepartial</b>(d),
 
913
<b>pcrepattern</b>(3), <b>pcreprecompile</b>(3).
748
914
</P>
749
 
<br><a name="SEC14" href="#TOC1">AUTHOR</a><br>
 
915
<br><a name="SEC15" href="#TOC1">AUTHOR</a><br>
750
916
<P>
751
917
Philip Hazel
752
918
<br>
755
921
Cambridge CB2 3QH, England.
756
922
<br>
757
923
</P>
758
 
<br><a name="SEC15" href="#TOC1">REVISION</a><br>
 
924
<br><a name="SEC16" href="#TOC1">REVISION</a><br>
759
925
<P>
760
 
Last updated: 21 November 2010
 
926
Last updated: 14 January 2012
761
927
<br>
762
 
Copyright &copy; 1997-2010 University of Cambridge.
 
928
Copyright &copy; 1997-2012 University of Cambridge.
763
929
<br>
764
930
<p>
765
931
Return to the <a href="index.html">PCRE index page</a>.