/[pcre]/code/trunk/doc/pcretest.txt
ViewVC logotype

Contents of /code/trunk/doc/pcretest.txt

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1320 - (hide annotations) (download)
Wed May 1 16:39:35 2013 UTC (3 weeks ago) by ph10
File MIME type: text/plain
File size: 51258 byte(s)
Source tidies (trails spaces, html updates) for 8.33-RC1.

1 ph10 1298 PCRETEST(1) General Commands Manual PCRETEST(1)
2 nigel 41
3    
4 ph10 1298
5 nigel 73 NAME
6     pcretest - a program for testing Perl-compatible regular expressions.
7    
8 nigel 53 SYNOPSIS
9 nigel 41
10 ph10 654 pcretest [options] [input file [output file]]
11 nigel 75
12 nigel 73 pcretest was written as a test program for the PCRE regular expression
13     library itself, but it can also be used for experimenting with regular
14     expressions. This document describes the features of the test program;
15     for details of the regular expressions themselves, see the pcrepattern
16 nigel 75 documentation. For details of the PCRE library function calls and their
17 ph10 1194 options, see the pcreapi , pcre16 and pcre32 documentation.
18 nigel 41
19 ph10 1194 The input for pcretest is a sequence of regular expression patterns and
20     strings to be matched, as described below. The output shows the result
21     of each match. Options on the command line and the patterns control
22     PCRE options and exactly what is output.
23 nigel 41
24 ph10 1194 As PCRE has evolved, it has acquired many different features, and as a
25     result, pcretest now has rather a lot of obscure options for testing
26     every possible feature. Some of these options are specifically designed
27     for use in conjunction with the test script and data files that are
28     distributed as part of PCRE, and are unlikely to be of use otherwise.
29     They are all documented here, but without much justification.
30 ph10 869
31 ph10 1194
32 ph10 1320 INPUT DATA FORMAT
33    
34     Input to pcretest is processed line by line, either by calling the C
35     library's fgets() function, or via the libreadline library (see below).
36     In Unix-like environments, fgets() treats any bytes other than newline
37     as data characters. However, in some Windows environments character 26
38     (hex 1A) causes an immediate end of file, and no further data is read.
39     For maximum portability, therefore, it is safest to use only ASCII
40     characters in pcretest input files.
41    
42    
43 ph10 1194 PCRE's 8-BIT, 16-BIT AND 32-BIT LIBRARIES
44    
45 ph10 869 From release 8.30, two separate PCRE libraries can be built. The origi-
46     nal one supports 8-bit character strings, whereas the newer 16-bit
47 ph10 1194 library supports character strings encoded in 16-bit units. From
48     release 8.32, a third library can be built, supporting character
49 ph10 1320 strings encoded in 32-bit units. The pcretest program can be used to
50 ph10 1194 test all three libraries. However, it is itself still an 8-bit program,
51 ph10 1320 reading 8-bit input and writing 8-bit output. When testing the 16-bit
52 ph10 1194 or 32-bit library, the patterns and data strings are converted to 16-
53     or 32-bit format before being passed to the PCRE library functions.
54     Results are converted to 8-bit for output.
55 ph10 869
56 ph10 1194 References to functions and structures of the form pcre[16|32]_xx below
57 ph10 1320 mean "pcre_xx when using the 8-bit library, pcre16_xx when using the
58     16-bit library, or pcre32_xx when using the 32-bit library".
59 ph10 869
60    
61 ph10 654 COMMAND LINE OPTIONS
62 nigel 41
63 ph10 1194 -8 If both the 8-bit library has been built, this option causes
64     the 8-bit library to be used (which is the default); if the
65     8-bit library has not been built, this option causes an
66     error.
67 ph10 869
68 ph10 1194 -16 If both the 8-bit or the 32-bit, and the 16-bit libraries
69     have been built, this option causes the 16-bit library to be
70     used. If only the 16-bit library has been built, this is the
71     default (so has no effect). If only the 8-bit or the 32-bit
72     library has been built, this option causes an error.
73    
74     -32 If both the 8-bit or the 16-bit, and the 32-bit libraries
75     have been built, this option causes the 32-bit library to be
76     used. If only the 32-bit library has been built, this is the
77     default (so has no effect). If only the 8-bit or the 16-bit
78     library has been built, this option causes an error.
79    
80     -b Behave as if each pattern has the /B (show byte code) modi-
81 ph10 654 fier; the internal form is output after compilation.
82 nigel 93
83 nigel 73 -C Output the version number of the PCRE library, and all avail-
84 ph10 1194 able information about the optional features that are
85 ph10 1298 included, and then exit with zero exit code. All other
86     options are ignored.
87 nigel 63
88 ph10 1298 -C option Output information about a specific build-time option, then
89     exit. This functionality is intended for use in scripts such
90     as RunTest. The following options output the value and set
91     the exit code as indicated:
92 ph10 869
93 ph10 1194 ebcdic-nl the code for LF (= NL) in an EBCDIC environment:
94     0x15 or 0x25
95     0 if used in an ASCII environment
96 ph10 1298 exit code is always 0
97     linksize the configured internal link size (2, 3, or 4)
98     exit code is set to the link size
99 ph10 869 newline the default newline setting:
100     CR, LF, CRLF, ANYCRLF, or ANY
101 ph10 1298 exit code is always 0
102 ph10 869
103 ph10 1298 The following options output 1 for true or 0 for false, and
104     set the exit code to the same value:
105 ph10 869
106 ph10 1194 ebcdic compiled for an EBCDIC environment
107 ph10 869 jit just-in-time support is available
108     pcre16 the 16-bit library was built
109 ph10 1194 pcre32 the 32-bit library was built
110 ph10 869 pcre8 the 8-bit library was built
111     ucp Unicode property support is available
112 ph10 1298 utf UTF-8 and/or UTF-16 and/or UTF-32 support
113     is available
114 ph10 869
115 ph10 1298 If an unknown option is given, an error message is output;
116     the exit code is 0.
117    
118     -d Behave as if each pattern has the /D (debug) modifier; the
119     internal form and information about the compiled pattern is
120 nigel 93 output after compilation; -d is equivalent to -b -i.
121 nigel 41
122 ph10 1298 -dfa Behave as if each data line contains the \D escape sequence;
123 nigel 77 this causes the alternative matching function,
124 ph10 1298 pcre[16|32]_dfa_exec(), to be used instead of the standard
125 ph10 1194 pcre[16|32]_exec() function (more detail is given below).
126 nigel 77
127 nigel 93 -help Output a brief summary these options and then exit.
128    
129 ph10 1298 -i Behave as if each pattern has the /I modifier; information
130 nigel 73 about the compiled pattern is given after compilation.
131 nigel 41
132 ph10 1298 -M Behave as if each data line contains the \M escape sequence;
133     this causes PCRE to discover the minimum MATCH_LIMIT and
134     MATCH_LIMIT_RECURSION settings by calling pcre[16|32]_exec()
135 ph10 869 repeatedly with different limits.
136 ph10 392
137 ph10 1298 -m Output the size of each compiled pattern after it has been
138     compiled. This is equivalent to adding /M to each regular
139 ph10 869 expression. The size is given in bytes for both libraries.
140 nigel 41
141 ph10 1298 -o osize Set the number of elements in the output vector that is used
142     when calling pcre[16|32]_exec() or pcre[16|32]_dfa_exec() to
143     be osize. The default value is 45, which is enough for 14
144 ph10 1194 capturing subexpressions for pcre[16|32]_exec() or 22 differ-
145 ph10 1298 ent matches for pcre[16|32]_dfa_exec(). The vector size can
146     be changed for individual matching calls by including \O in
147 ph10 1194 the data line (see below).
148 nigel 41
149 ph10 1298 -p Behave as if each pattern has the /P modifier; the POSIX
150     wrapper API is used to call PCRE. None of the other options
151     has any effect when -p is set. This option can be used only
152 ph10 869 with the 8-bit library.
153 nigel 41
154 ph10 1298 -q Do not output the version number of pcretest at the start of
155 nigel 87 execution.
156    
157 ph10 1298 -S size On Unix-like systems, set the size of the run-time stack to
158 nigel 91 size megabytes.
159    
160 ph10 1298 -s or -s+ Behave as if each pattern has the /S modifier; in other
161     words, force each pattern to be studied. If -s+ is used, all
162     the JIT compile options are passed to pcre[16|32]_study(),
163     causing just-in-time optimization to be set up if it is
164     available, for both full and partial matching. Specific JIT
165 ph10 1194 compile options can be selected by following -s+ with a digit
166 ph10 1298 in the range 1 to 7, which selects the JIT compile modes as
167 ph10 1194 follows:
168 ph10 654
169 ph10 930 1 normal match only
170     2 soft partial match only
171     3 normal match and soft partial match
172     4 hard partial match only
173     6 soft and hard partial match
174     7 all three modes (default)
175 ph10 869
176 ph10 1298 If -s++ is used instead of -s+ (with or without a following
177     digit), the text "(JIT)" is added to the first output line
178 ph10 930 after a match or no match when JIT-compiled code was actually
179     used.
180    
181 ph10 1298 Note that there are pattern options that can override -s,
182 ph10 1194 either specifying no studying at all, or suppressing JIT com-
183     pilation.
184 ph10 930
185 ph10 1298 If the /I or /D option is present on a pattern (requesting
186     output about the compiled pattern), information about the
187     result of studying is not included when studying is caused
188     only by -s and neither -i nor -d is present on the command
189     line. This behaviour means that the output from tests that
190     are run with and without -s should be identical, except when
191 ph10 1194 options that output information about the actual running of a
192     match are set.
193 ph10 930
194 ph10 1298 The -M, -t, and -tm options, which give information about
195     resources used, are likely to produce different output with
196     and without -s. Output may also differ if the /C option is
197 ph10 1194 present on an individual pattern. This uses callouts to trace
198 ph10 1298 the the matching process, and this may be different between
199     studied and non-studied patterns. If the pattern contains
200     (*MARK) items there may also be differences, for the same
201 ph10 1194 reason. The -s command line option can be overridden for spe-
202 ph10 1298 cific patterns that should never be studied (see the /S pat-
203 ph10 1194 tern modifier below).
204    
205 ph10 1298 -t Run each compile, study, and match many times with a timer,
206     and output resulting time per compile or match (in millisec-
207     onds). Do not set -m with -t, because you will then get the
208     size output a zillion times, and the timing will be dis-
209     torted. You can control the number of iterations that are
210     used for timing by following -t with a number (as a separate
211 nigel 93 item on the command line). For example, "-t 1000" would iter-
212     ate 1000 times. The default is to iterate 500000 times.
213 nigel 49
214 nigel 93 -tm This is like -t except that it times only the matching phase,
215     not the compile or study phases.
216 nigel 49
217 nigel 93
218 nigel 63 DESCRIPTION
219 nigel 41
220 ph10 1298 If pcretest is given two filename arguments, it reads from the first
221 nigel 73 and writes to the second. If it is given only one filename argument, it
222 ph10 1298 reads from that file and writes to stdout. Otherwise, it reads from
223     stdin and writes to stdout, and prompts for each line of input, using
224 nigel 73 "re>" to prompt for regular expressions, and "data>" to prompt for data
225     lines.
226 nigel 41
227 ph10 1298 When pcretest is built, a configuration option can specify that it
228     should be linked with the libreadline library. When this is done, if
229 ph10 289 the input is from a terminal, it is read using the readline() function.
230 ph10 1298 This provides line-editing and history facilities. The output from the
231 ph10 289 -help option states whether or not readline() will be used.
232    
233 nigel 73 The program handles any number of sets of input on a single input file.
234 ph10 1298 Each set starts with a regular expression, and continues with any num-
235 nigel 73 ber of data lines to be matched against the pattern.
236 nigel 41
237 ph10 1298 Each data line is matched separately and independently. If you want to
238 nigel 91 do multi-line matches, you have to use the \n escape sequence (or \r or
239 nigel 93 \r\n, etc., depending on the newline setting) in a single line of input
240 ph10 1298 to encode the newline sequences. There is no limit on the length of
241     data lines; the input buffer is automatically extended if it is too
242 nigel 93 small.
243 nigel 63
244 ph10 1298 An empty line signals the end of the data lines, at which point a new
245     regular expression is read. The regular expressions are given enclosed
246 nigel 91 in any non-alphanumeric delimiters other than backslash, for example:
247 nigel 63
248 nigel 73 /(a|bc)x+yz/
249 nigel 41
250 ph10 1298 White space before the initial delimiter is ignored. A regular expres-
251     sion may be continued over several input lines, in which case the new-
252     line characters are included within it. It is possible to include the
253 nigel 73 delimiter within the pattern by escaping it, for example
254 nigel 41
255 nigel 73 /abc\/def/
256 nigel 41
257 ph10 1298 If you do so, the escape and the delimiter form part of the pattern,
258     but since delimiters are always non-alphanumeric, this does not affect
259     its interpretation. If the terminating delimiter is immediately fol-
260 nigel 73 lowed by a backslash, for example,
261 nigel 41
262 nigel 73 /abc/\
263 nigel 41
264 ph10 1298 then a backslash is added to the end of the pattern. This is done to
265     provide a way of testing the error condition that arises if a pattern
266 nigel 73 finishes with a backslash, because
267 nigel 49
268 nigel 73 /abc\/
269 nigel 49
270 ph10 1298 is interpreted as the first line of a pattern that starts with "abc/",
271 nigel 73 causing pcretest to read the next line as a continuation of the regular
272     expression.
273 nigel 49
274 nigel 41
275 nigel 63 PATTERN MODIFIERS
276 nigel 41
277 ph10 1298 A pattern may be followed by any number of modifiers, which are mostly
278     single characters, though some of these can be qualified by further
279     characters. Following Perl usage, these are referred to below as, for
280     example, "the /i modifier", even though the delimiter of the pattern
281     need not always be a slash, and no slash is used when writing modi-
282     fiers. White space may appear between the final pattern delimiter and
283     the first modifier, and between the modifiers themselves. For refer-
284     ence, here is a complete list of modifiers. They fall into several
285 ph10 1194 groups that are described in detail in the following sections.
286 nigel 41
287 ph10 1194 /8 set UTF mode
288 ph10 1320 /9 set PCRE_NEVER_UTF (locks out UTF mode)
289 ph10 1194 /? disable UTF validity check
290     /+ show remainder of subject after match
291     /= show all captures (not just those that are set)
292    
293     /A set PCRE_ANCHORED
294     /B show compiled code
295     /C set PCRE_AUTO_CALLOUT
296     /D same as /B plus /I
297     /E set PCRE_DOLLAR_ENDONLY
298     /F flip byte order in compiled pattern
299     /f set PCRE_FIRSTLINE
300     /G find all matches (shorten string)
301     /g find all matches (use startoffset)
302     /I show information about pattern
303     /i set PCRE_CASELESS
304     /J set PCRE_DUPNAMES
305     /K show backtracking control names
306     /L set locale
307     /M show compiled memory size
308     /m set PCRE_MULTILINE
309     /N set PCRE_NO_AUTO_CAPTURE
310     /P use the POSIX wrapper
311     /S study the pattern after compilation
312     /s set PCRE_DOTALL
313     /T select character tables
314     /U set PCRE_UNGREEDY
315     /W set PCRE_UCP
316     /X set PCRE_EXTRA
317     /x set PCRE_EXTENDED
318     /Y set PCRE_NO_START_OPTIMIZE
319     /Z don't show lengths in /B output
320    
321     /<any> set PCRE_NEWLINE_ANY
322     /<anycrlf> set PCRE_NEWLINE_ANYCRLF
323     /<cr> set PCRE_NEWLINE_CR
324     /<crlf> set PCRE_NEWLINE_CRLF
325     /<lf> set PCRE_NEWLINE_LF
326     /<bsr_anycrlf> set PCRE_BSR_ANYCRLF
327     /<bsr_unicode> set PCRE_BSR_UNICODE
328     /<JS> set PCRE_JAVASCRIPT_COMPAT
329    
330    
331     Perl-compatible modifiers
332    
333 nigel 75 The /i, /m, /s, and /x modifiers set the PCRE_CASELESS, PCRE_MULTILINE,
334 ph10 1298 PCRE_DOTALL, or PCRE_EXTENDED options, respectively, when
335     pcre[16|32]_compile() is called. These four modifier letters have the
336 ph10 1194 same effect as they do in Perl. For example:
337 nigel 75
338 nigel 73 /caseless/i
339 nigel 41
340 ph10 1194
341     Modifiers for other PCRE options
342    
343 ph10 1298 The following table shows additional modifiers for setting PCRE com-
344 ph10 535 pile-time options that do not correspond to anything in Perl:
345 nigel 41
346 ph10 869 /8 PCRE_UTF8 ) when using the 8-bit
347     /? PCRE_NO_UTF8_CHECK ) library
348    
349     /8 PCRE_UTF16 ) when using the 16-bit
350     /? PCRE_NO_UTF16_CHECK ) library
351    
352 ph10 1194 /8 PCRE_UTF32 ) when using the 32-bit
353     /? PCRE_NO_UTF32_CHECK ) library
354    
355 ph10 1320 /9 PCRE_NEVER_UTF
356 ph10 231 /A PCRE_ANCHORED
357     /C PCRE_AUTO_CALLOUT
358     /E PCRE_DOLLAR_ENDONLY
359     /f PCRE_FIRSTLINE
360     /J PCRE_DUPNAMES
361     /N PCRE_NO_AUTO_CAPTURE
362     /U PCRE_UNGREEDY
363 ph10 518 /W PCRE_UCP
364 ph10 231 /X PCRE_EXTRA
365 ph10 579 /Y PCRE_NO_START_OPTIMIZE
366 ph10 1194 /<any> PCRE_NEWLINE_ANY
367     /<anycrlf> PCRE_NEWLINE_ANYCRLF
368 ph10 231 /<cr> PCRE_NEWLINE_CR
369 ph10 1194 /<crlf> PCRE_NEWLINE_CRLF
370 ph10 231 /<lf> PCRE_NEWLINE_LF
371     /<bsr_anycrlf> PCRE_BSR_ANYCRLF
372     /<bsr_unicode> PCRE_BSR_UNICODE
373 ph10 1194 /<JS> PCRE_JAVASCRIPT_COMPAT
374 nigel 75
375 ph10 1298 The modifiers that are enclosed in angle brackets are literal strings
376     as shown, including the angle brackets, but the letters within can be
377     in either case. This example sets multiline matching with CRLF as the
378 ph10 654 line ending sequence:
379 nigel 91
380 ph10 654 /^abc/m<CRLF>
381 nigel 93
382 ph10 1298 As well as turning on the PCRE_UTF8/16/32 option, the /8 modifier
383     causes all non-printing characters in output strings to be printed
384 ph10 1194 using the \x{hh...} notation. Otherwise, those less than 0x100 are out-
385     put in hex without the curly brackets.
386 nigel 93
387 ph10 1298 Full details of the PCRE options are given in the pcreapi documenta-
388 ph10 869 tion.
389    
390 nigel 91 Finding all matches in a string
391    
392 ph10 1298 Searching for all possible matches within each subject string can be
393     requested by the /g or /G modifier. After finding a match, PCRE is
394 nigel 73 called again to search the remainder of the subject string. The differ-
395     ence between /g and /G is that the former uses the startoffset argument
396 ph10 1298 to pcre[16|32]_exec() to start searching at a new point within the
397     entire string (which is in effect what Perl does), whereas the latter
398     passes over a shortened substring. This makes a difference to the
399     matching process if the pattern begins with a lookbehind assertion
400 ph10 1194 (including \b or \B).
401 nigel 49
402 ph10 1298 If any call to pcre[16|32]_exec() in a /g or /G sequence matches an
403     empty string, the next call is done with the PCRE_NOTEMPTY_ATSTART and
404     PCRE_ANCHORED flags set in order to search for another, non-empty,
405     match at the same point. If this second match fails, the start offset
406     is advanced, and the normal match is retried. This imitates the way
407 ph10 567 Perl handles such cases when using the /g modifier or the split() func-
408 ph10 1298 tion. Normally, the start offset is advanced by one character, but if
409     the newline convention recognizes CRLF as a newline, and the current
410 ph10 567 character is CR followed by LF, an advance of two is used.
411 nigel 49
412 nigel 91 Other modifiers
413    
414 nigel 75 There are yet more modifiers for controlling the way pcretest operates.
415 nigel 49
416 ph10 1298 The /+ modifier requests that as well as outputting the substring that
417     matched the entire pattern, pcretest should in addition output the
418     remainder of the subject string. This is useful for tests where the
419     subject contains multiple copies of the same substring. If the + modi-
420     fier appears twice, the same action is taken for captured substrings.
421     In each case the remainder is output on the following line with a plus
422     character following the capture number. Note that this modifier must
423     not immediately follow the /S modifier because /S+ and /S++ have other
424 ph10 930 meanings.
425 nigel 41
426 ph10 1298 The /= modifier requests that the values of all potential captured
427     parentheses be output after a match. By default, only those up to the
428 ph10 869 highest one actually used in the match are output (corresponding to the
429 ph10 1194 return code from pcre[16|32]_exec()). Values in the offsets vector cor-
430 ph10 1298 responding to higher numbers should be set to -1, and these are output
431     as "<unset>". This modifier gives a way of checking that this is hap-
432 ph10 1194 pening.
433 ph10 654
434 ph10 1298 The /B modifier is a debugging feature. It requests that pcretest out-
435     put a representation of the compiled code after compilation. Normally
436     this information contains length and offset values; however, if /Z is
437     also present, this data is replaced by spaces. This is a special fea-
438     ture for use in the automatic test scripts; it ensures that the same
439 ph10 123 output is generated for different internal link sizes.
440 nigel 93
441 ph10 1298 The /D modifier is a PCRE debugging feature, and is equivalent to /BI,
442 nigel 93 that is, both the /B and the /I modifiers.
443 nigel 41
444 ph10 1298 The /F modifier causes pcretest to flip the byte order of the 2-byte
445 ph10 869 and 4-byte fields in the compiled pattern. This facility is for testing
446 ph10 1298 the feature in PCRE that allows it to execute patterns that were com-
447 ph10 869 piled on a host with a different endianness. This feature is not avail-
448 ph10 1298 able when the POSIX interface to PCRE is being used, that is, when the
449 ph10 869 /P pattern modifier is specified. See also the section about saving and
450     reloading compiled patterns below.
451 nigel 75
452 ph10 1298 The /I modifier requests that pcretest output information about the
453     compiled pattern (whether it is anchored, has a fixed first character,
454     and so on). It does this by calling pcre[16|32]_fullinfo() after com-
455     piling a pattern. If the pattern is studied, the results of that are
456 ph10 1194 also output.
457 nigel 41
458 ph10 1298 The /K modifier requests pcretest to show names from backtracking con-
459     trol verbs that are returned from calls to pcre[16|32]_exec(). It
460     causes pcretest to create a pcre[16|32]_extra block if one has not
461     already been created by a call to pcre[16|32]_study(), and to set the
462     PCRE_EXTRA_MARK flag and the mark field within it, every time that
463     pcre[16|32]_exec() is called. If the variable that the mark field
464     points to is non-NULL for a match, non-match, or partial match,
465     pcretest prints the string to which it points. For a match, this is
466     shown on a line by itself, tagged with "MK:". For a non-match it is
467 ph10 1194 added to the message.
468 ph10 512
469 ph10 1298 The /L modifier must be followed directly by the name of a locale, for
470 ph10 512 example,
471    
472     /pattern/Lfr_FR
473    
474     For this reason, it must be the last modifier. The given locale is set,
475 ph10 1298 pcre[16|32]_maketables() is called to build a set of character tables
476     for the locale, and this is then passed to pcre[16|32]_compile() when
477     compiling the regular expression. Without an /L (or /T) modifier, NULL
478     is passed as the tables pointer; that is, /L applies only to the
479 ph10 1194 expression on which it appears.
480 ph10 512
481 ph10 1298 The /M modifier causes the size in bytes of the memory block used to
482     hold the compiled pattern to be output. This does not include the size
483     of the pcre[16|32] block; it is just the actual compiled data. If the
484 ph10 1194 pattern is successfully studied with the PCRE_STUDY_JIT_COMPILE option,
485 ph10 869 the size of the JIT compiled code is also output.
486 nigel 41
487 ph10 1298 The /S modifier causes pcre[16|32]_study() to be called after the
488     expression has been compiled, and the results used when the expression
489 ph10 1194 is matched. There are a number of qualifying characters that may follow
490     /S. They may appear in any order.
491 nigel 41
492 ph10 1298 If S is followed by an exclamation mark, pcre[16|32]_study() is called
493     with the PCRE_STUDY_EXTRA_NEEDED option, causing it always to return a
494 ph10 1194 pcre_extra block, even when studying discovers no useful information.
495    
496     If /S is followed by a second S character, it suppresses studying, even
497 ph10 1298 if it was requested externally by the -s command line option. This
498     makes it possible to specify that certain patterns are always studied,
499 ph10 1194 and others are never studied, independently of -s. This feature is used
500     in the test files in a few cases where the output is different when the
501     pattern is studied.
502    
503 ph10 1298 If the /S modifier is followed by a + character, the call to
504     pcre[16|32]_study() is made with all the JIT study options, requesting
505     just-in-time optimization support if it is available, for both normal
506     and partial matching. If you want to restrict the JIT compiling modes,
507 ph10 930 you can follow /S+ with a digit in the range 1 to 7:
508 ph10 691
509 ph10 930 1 normal match only
510     2 soft partial match only
511     3 normal match and soft partial match
512     4 hard partial match only
513     6 soft and hard partial match
514     7 all three modes (default)
515    
516     If /S++ is used instead of /S+ (with or without a following digit), the
517 ph10 1298 text "(JIT)" is added to the first output line after a match or no
518 ph10 930 match when JIT-compiled code was actually used.
519    
520 ph10 1298 Note that there is also an independent /+ modifier; it must not be
521 ph10 930 given immediately after /S or /S+ because this will be misinterpreted.
522    
523     If JIT studying is successful, the compiled JIT code will automatically
524 ph10 1298 be used when pcre[16|32]_exec() is run, except when incompatible run-
525     time options are specified. For more details, see the pcrejit documen-
526     tation. See also the \J escape sequence below for a way of setting the
527 ph10 1194 size of the JIT stack.
528 ph10 930
529 ph10 1298 Finally, if /S is followed by a minus character, JIT compilation is
530     suppressed, even if it was requested externally by the -s command line
531     option. This makes it possible to specify that JIT is never to be used
532 ph10 1194 for certain patterns.
533    
534 ph10 1298 The /T modifier must be followed by a single digit. It causes a spe-
535 ph10 1194 cific set of built-in character tables to be passed to pcre[16|32]_com-
536 ph10 1298 pile(). It is used in the standard PCRE tests to check behaviour with
537 ph10 869 different character tables. The digit specifies the tables as follows:
538 ph10 545
539     0 the default ASCII tables, as distributed in
540     pcre_chartables.c.dist
541     1 a set of tables defining ISO 8859 characters
542    
543 ph10 1298 In table 1, some characters whose codes are greater than 128 are iden-
544 ph10 545 tified as letters, digits, spaces, etc.
545    
546 ph10 535 Using the POSIX wrapper API
547 nigel 41
548 ph10 1298 The /P modifier causes pcretest to call PCRE via the POSIX wrapper API
549     rather than its native API. This supports only the 8-bit library. When
550     /P is set, the following modifiers set options for the regcomp() func-
551 ph10 869 tion:
552 ph10 535
553     /i REG_ICASE
554     /m REG_NEWLINE
555     /N REG_NOSUB
556     /s REG_DOTALL )
557     /U REG_UNGREEDY ) These options are not part of
558     /W REG_UCP ) the POSIX standard
559     /8 REG_UTF8 )
560    
561 ph10 1298 The /+ modifier works as described above. All other modifiers are
562 ph10 535 ignored.
563    
564    
565 nigel 53 DATA LINES
566 nigel 63
567 ph10 1298 Before each data line is passed to pcre[16|32]_exec(), leading and
568     trailing white space is removed, and it is then scanned for \ escapes.
569     Some of these are pretty esoteric features, intended for checking out
570     some of the more complicated features of PCRE. If you are just testing
571     "ordinary" regular expressions, you probably don't need any of these.
572 ph10 869 The following escapes are recognized:
573 nigel 49
574 nigel 93 \a alarm (BEL, \x07)
575     \b backspace (\x08)
576     \e escape (\x27)
577 ph10 654 \f form feed (\x0c)
578 nigel 93 \n newline (\x0a)
579 nigel 91 \qdd set the PCRE_MATCH_LIMIT limit to dd
580     (any number of digits)
581 nigel 93 \r carriage return (\x0d)
582     \t tab (\x09)
583     \v vertical tab (\x0b)
584 ph10 869 \nnn octal character (up to 3 octal digits); always
585 ph10 1194 a byte unless > 255 in UTF-8 or 16-bit or 32-bit mode
586 ph10 572 \xhh hexadecimal byte (up to 2 hex digits)
587 ph10 869 \x{hh...} hexadecimal character (any number of hex digits)
588 ph10 1194 \A pass the PCRE_ANCHORED option to pcre[16|32]_exec()
589     or pcre[16|32]_dfa_exec()
590     \B pass the PCRE_NOTBOL option to pcre[16|32]_exec()
591     or pcre[16|32]_dfa_exec()
592     \Cdd call pcre[16|32]_copy_substring() for substring dd
593 nigel 75 after a successful match (number less than 32)
594 ph10 1194 \Cname call pcre[16|32]_copy_named_substring() for substring
595 nigel 73 "name" after a successful match (name termin-
596     ated by next non alphanumeric character)
597     \C+ show the current captured substrings at callout
598     time
599     \C- do not supply a callout function
600     \C!n return 1 instead of 0 when callout number n is
601     reached
602     \C!n!m return 1 instead of 0 when callout number n is
603     reached for the nth time
604     \C*n pass the number n (may be negative) as callout
605 nigel 75 data; this is used as the callout return value
606 ph10 1194 \D use the pcre[16|32]_dfa_exec() match function
607     \F only shortest match for pcre[16|32]_dfa_exec()
608     \Gdd call pcre[16|32]_get_substring() for substring dd
609 nigel 75 after a successful match (number less than 32)
610 ph10 1194 \Gname call pcre[16|32]_get_named_substring() for substring
611 nigel 73 "name" after a successful match (name termin-
612     ated by next non-alphanumeric character)
613 ph10 691 \Jdd set up a JIT stack of dd kilobytes maximum (any
614     number of digits)
615 ph10 1194 \L call pcre[16|32]_get_substringlist() after a
616 nigel 73 successful match
617 nigel 87 \M discover the minimum MATCH_LIMIT and
618     MATCH_LIMIT_RECURSION settings
619 ph10 1194 \N pass the PCRE_NOTEMPTY option to pcre[16|32]_exec()
620     or pcre[16|32]_dfa_exec(); if used twice, pass the
621 ph10 453 PCRE_NOTEMPTY_ATSTART option
622 nigel 73 \Odd set the size of the output vector passed to
623 ph10 1194 pcre[16|32]_exec() to dd (any number of digits)
624     \P pass the PCRE_PARTIAL_SOFT option to pcre[16|32]_exec()
625     or pcre[16|32]_dfa_exec(); if used twice, pass the
626 ph10 429 PCRE_PARTIAL_HARD option
627 nigel 91 \Qdd set the PCRE_MATCH_LIMIT_RECURSION limit to dd
628     (any number of digits)
629 ph10 1194 \R pass the PCRE_DFA_RESTART option to pcre[16|32]_dfa_exec()
630 nigel 73 \S output details of memory get/free calls during matching
631 ph10 1298 \Y pass the PCRE_NO_START_OPTIMIZE option to
632 ph10 1194 pcre[16|32]_exec()
633     or pcre[16|32]_dfa_exec()
634     \Z pass the PCRE_NOTEOL option to pcre[16|32]_exec()
635     or pcre[16|32]_dfa_exec()
636     \? pass the PCRE_NO_UTF[8|16|32]_CHECK option to
637     pcre[16|32]_exec() or pcre[16|32]_dfa_exec()
638 ph10 567 \>dd start the match at offset dd (optional "-"; then
639     any number of digits); this sets the startoffset
640 ph10 1298 argument for pcre[16|32]_exec() or
641 ph10 1194 pcre[16|32]_dfa_exec()
642     \<cr> pass the PCRE_NEWLINE_CR option to pcre[16|32]_exec()
643     or pcre[16|32]_dfa_exec()
644     \<lf> pass the PCRE_NEWLINE_LF option to pcre[16|32]_exec()
645     or pcre[16|32]_dfa_exec()
646     \<crlf> pass the PCRE_NEWLINE_CRLF option to pcre[16|32]_exec()
647     or pcre[16|32]_dfa_exec()
648     \<anycrlf> pass the PCRE_NEWLINE_ANYCRLF option to pcre[16|32]_exec()
649     or pcre[16|32]_dfa_exec()
650     \<any> pass the PCRE_NEWLINE_ANY option to pcre[16|32]_exec()
651     or pcre[16|32]_dfa_exec()
652 nigel 71
653 ph10 1298 The use of \x{hh...} is not dependent on the use of the /8 modifier on
654     the pattern. It is recognized always. There may be any number of hexa-
655     decimal digits inside the braces; invalid values provoke error mes-
656 ph10 869 sages.
657 ph10 572
658 ph10 1298 Note that \xhh specifies one byte rather than one character in UTF-8
659     mode; this makes it possible to construct invalid UTF-8 sequences for
660     testing purposes. On the other hand, \x{hh} is interpreted as a UTF-8
661     character in UTF-8 mode, generating more than one byte if the value is
662     greater than 127. When testing the 8-bit library not in UTF-8 mode,
663 ph10 878 \x{hh} generates one byte for values less than 256, and causes an error
664     for greater values.
665 ph10 869
666     In UTF-16 mode, all 4-digit \x{hhhh} values are accepted. This makes it
667     possible to construct invalid UTF-16 sequences for testing purposes.
668    
669 ph10 1298 In UTF-32 mode, all 4- to 8-digit \x{...} values are accepted. This
670     makes it possible to construct invalid UTF-32 sequences for testing
671 ph10 1194 purposes.
672    
673 ph10 1298 The escapes that specify line ending sequences are literal strings,
674 nigel 93 exactly as shown. No more than one newline setting should be present in
675     any data line.
676 nigel 75
677 ph10 1298 A backslash followed by anything else just escapes the anything else.
678     If the very last character is a backslash, it is ignored. This gives a
679     way of passing an empty line as data, since a real empty line termi-
680 nigel 93 nates the data input.
681    
682 ph10 1298 The \J escape provides a way of setting the maximum stack size that is
683     used by the just-in-time optimization code. It is ignored if JIT opti-
684     mization is not being used. Providing a stack that is larger than the
685 ph10 691 default 32K is necessary only for very complicated patterns.
686 nigel 41
687 ph10 1194 If \M is present, pcretest calls pcre[16|32]_exec() several times, with
688 ph10 869 different values in the match_limit and match_limit_recursion fields of
689 ph10 1298 the pcre[16|32]_extra data structure, until it finds the minimum num-
690 ph10 1194 bers for each parameter that allow pcre[16|32]_exec() to complete with-
691 ph10 1298 out error. Because this is testing a specific feature of the normal
692 ph10 1194 interpretive pcre[16|32]_exec() execution, the use of any JIT optimiza-
693 ph10 1298 tion that might have been set up by the /S+ qualifier of -s+ option is
694 ph10 1194 disabled.
695 ph10 691
696 ph10 1298 The match_limit number is a measure of the amount of backtracking that
697     takes place, and checking it out can be instructive. For most simple
698     matches, the number is quite small, but for patterns with very large
699     numbers of matching possibilities, it can become large very quickly
700     with increasing length of subject string. The match_limit_recursion
701     number is a measure of how much stack (or, if PCRE is compiled with
702     NO_RECURSE, how much heap) memory is needed to complete the match
703 ph10 691 attempt.
704    
705 ph10 1298 When \O is used, the value specified may be higher or lower than the
706 nigel 75 size set by the -O command line option (or defaulted to 45); \O applies
707 ph10 1298 only to the call of pcre[16|32]_exec() for the line in which it
708 ph10 1194 appears.
709 nigel 63
710 ph10 1298 If the /P modifier was present on the pattern, causing the POSIX wrap-
711     per API to be used, the only option-setting sequences that have any
712     effect are \B, \N, and \Z, causing REG_NOTBOL, REG_NOTEMPTY, and
713 ph10 535 REG_NOTEOL, respectively, to be passed to regexec().
714 nigel 41
715    
716 nigel 77 THE ALTERNATIVE MATCHING FUNCTION
717 nigel 53
718 ph10 1298 By default, pcretest uses the standard PCRE matching function,
719     pcre[16|32]_exec() to match each data line. PCRE also supports an
720     alternative matching function, pcre[16|32]_dfa_test(), which operates
721     in a different way, and has some restrictions. The differences between
722 ph10 1194 the two functions are described in the pcrematching documentation.
723 nigel 77
724 ph10 1298 If a data line contains the \D escape sequence, or if the command line
725     contains the -dfa option, the alternative matching function is used.
726 nigel 77 This function finds all possible matches at a given point. If, however,
727 ph10 1298 the \F escape sequence is present in the data line, it stops after the
728 nigel 77 first match is found. This is always the shortest possible match.
729    
730    
731     DEFAULT OUTPUT FROM PCRETEST
732    
733 ph10 1298 This section describes the output when the normal matching function,
734 ph10 1194 pcre[16|32]_exec(), is being used.
735 nigel 77
736 nigel 73 When a match succeeds, pcretest outputs the list of captured substrings
737 ph10 1298 that pcre[16|32]_exec() returns, starting with number 0 for the string
738     that matched the whole pattern. Otherwise, it outputs "No match" when
739     the return is PCRE_ERROR_NOMATCH, and "Partial match:" followed by the
740     partially matching substring when pcre[16|32]_exec() returns
741     PCRE_ERROR_PARTIAL. (Note that this is the entire substring that was
742     inspected during the partial match; it may include characters before
743     the actual match start if a lookbehind assertion, \K, \b, or \B was
744     involved.) For any other return, pcretest outputs the PCRE negative
745     error number and a short descriptive phrase. If the error is a failed
746     UTF string check, the offset of the start of the failing character and
747     the reason code are also output, provided that the size of the output
748     vector is at least two. Here is an example of an interactive pcretest
749 ph10 869 run.
750 nigel 53
751 nigel 73 $ pcretest
752 ph10 654 PCRE version 8.13 2011-04-30
753 nigel 53
754 nigel 73 re> /^abc(\d+)/
755     data> abc123
756     0: abc123
757     1: 123
758     data> xyz
759     No match
760 nigel 53
761 ph10 654 Unset capturing substrings that are not followed by one that is set are
762 ph10 1298 not returned by pcre[16|32]_exec(), and are not shown by pcretest. In
763 ph10 1194 the following example, there are two capturing substrings, but when the
764 ph10 1298 first data line is matched, the second, unset substring is not shown.
765     An "internal" unset substring is shown as "<unset>", as for the second
766 ph10 654 data line.
767 ph10 286
768     re> /(a)|(b)/
769     data> a
770     0: a
771     1: a
772     data> b
773     0: b
774     1: <unset>
775     2: b
776    
777 ph10 1298 If the strings contain any non-printing characters, they are output as
778     \xhh escapes if the value is less than 256 and UTF mode is not set.
779 ph10 869 Otherwise they are output as \x{hh...} escapes. See below for the defi-
780 ph10 1298 nition of non-printing characters. If the pattern has the /+ modifier,
781     the output for substring 0 is followed by the the rest of the subject
782 ph10 869 string, identified by "0+" like this:
783 nigel 53
784 nigel 73 re> /cat/+
785     data> cataract
786     0: cat
787     0+ aract
788 nigel 53
789 ph10 1298 If the pattern has the /g or /G modifier, the results of successive
790 nigel 73 matching attempts are output in sequence, like this:
791 nigel 53
792 nigel 73 re> /\Bi(\w\w)/g
793     data> Mississippi
794     0: iss
795     1: ss
796     0: iss
797     1: ss
798     0: ipp
799     1: pp
800 nigel 53
801 ph10 1298 "No match" is output only if the first match attempt fails. Here is an
802     example of a failure message (the offset 4 that is specified by \>4 is
803 ph10 654 past the end of the subject string):
804 nigel 53
805 ph10 654 re> /xyz/
806     data> xyz\>4
807     Error -24 (bad offset value)
808    
809 ph10 1298 If any of the sequences \C, \G, or \L are present in a data line that
810     is successfully matched, the substrings extracted by the convenience
811 nigel 73 functions are output with C, G, or L after the string number instead of
812     a colon. This is in addition to the normal full list. The string length
813 ph10 1298 (that is, the return from the extraction function) is given in paren-
814 nigel 73 theses after each string for \C and \G.
815 nigel 53
816 nigel 93 Note that whereas patterns can be continued over several lines (a plain
817 nigel 73 ">" prompt is used for continuations), data lines may not. However new-
818 ph10 1298 lines can be included in data by means of the \n escape (or \r, \r\n,
819 nigel 93 etc., depending on the newline sequence setting).
820 nigel 53
821    
822 nigel 77 OUTPUT FROM THE ALTERNATIVE MATCHING FUNCTION
823    
824 ph10 1194 When the alternative matching function, pcre[16|32]_dfa_exec(), is used
825 ph10 1298 (by means of the \D escape sequence or the -dfa command line option),
826     the output consists of a list of all the matches that start at the
827 ph10 869 first point in the subject where there is at least one match. For exam-
828     ple:
829 nigel 77
830     re> /(tang|tangerine|tan)/
831     data> yellow tangerine\D
832     0: tangerine
833     1: tang
834     2: tan
835    
836 ph10 1298 (Using the normal matching function on this data finds only "tang".)
837     The longest matching string is always given first (and numbered zero).
838 ph10 429 After a PCRE_ERROR_PARTIAL return, the output is "Partial match:", fol-
839 ph10 1298 lowed by the partially matching substring. (Note that this is the
840     entire substring that was inspected during the partial match; it may
841 ph10 567 include characters before the actual match start if a lookbehind asser-
842     tion, \K, \b, or \B was involved.)
843 nigel 77
844 nigel 93 If /g is present on the pattern, the search for further matches resumes
845     at the end of the longest match. For example:
846 nigel 77
847     re> /(tang|tangerine|tan)/g
848     data> yellow tangerine and tangy sultana\D
849     0: tangerine
850     1: tang
851     2: tan
852     0: tang
853     1: tan
854     0: tan
855    
856 ph10 1298 Since the matching function does not support substring capture, the
857     escape sequences that are concerned with captured substrings are not
858 nigel 77 relevant.
859    
860    
861     RESTARTING AFTER A PARTIAL MATCH
862    
863     When the alternative matching function has given the PCRE_ERROR_PARTIAL
864 ph10 1298 return, indicating that the subject partially matched the pattern, you
865     can restart the match with additional subject data by means of the \R
866 nigel 77 escape sequence. For example:
867    
868 ph10 155 re> /^\d?\d(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)\d\d$/
869 nigel 77 data> 23ja\P\D
870     Partial match: 23ja
871     data> n05\R\D
872     0: n05
873    
874 ph10 1298 For further information about partial matching, see the pcrepartial
875 nigel 77 documentation.
876    
877    
878 nigel 75 CALLOUTS
879    
880 ph10 1298 If the pattern contains any callout requests, pcretest's callout func-
881     tion is called during matching. This works with both matching func-
882 nigel 77 tions. By default, the called function displays the callout number, the
883 ph10 1298 start and current positions in the text at the callout time, and the
884 ph10 869 next pattern item to be tested. For example:
885 nigel 75
886     --->pqrabcdef
887     0 ^ ^ \d
888    
889 ph10 1298 This output indicates that callout number 0 occurred for a match
890     attempt starting at the fourth character of the subject string, when
891 ph10 869 the pointer was at the seventh character of the data, and when the next
892 ph10 1298 pattern item was \d. Just one circumflex is output if the start and
893 ph10 869 current positions are the same.
894 nigel 75
895     Callouts numbered 255 are assumed to be automatic callouts, inserted as
896 ph10 1298 a result of the /C pattern modifier. In this case, instead of showing
897     the callout number, the offset in the pattern, preceded by a plus, is
898 nigel 75 output. For example:
899    
900     re> /\d?[A-E]\*/C
901     data> E*
902     --->E*
903     +0 ^ \d?
904     +3 ^ [A-E]
905     +8 ^^ \*
906     +10 ^ ^
907     0: E*
908    
909 ph10 654 If a pattern contains (*MARK) items, an additional line is output when-
910 ph10 1298 ever a change of latest mark is passed to the callout function. For
911 ph10 654 example:
912    
913     re> /a(*MARK:X)bc/C
914     data> abc
915     --->abc
916     +0 ^ a
917     +1 ^^ (*MARK:X)
918     +10 ^^ b
919     Latest Mark: X
920     +11 ^ ^ c
921     +12 ^ ^
922     0: abc
923    
924 ph10 1298 The mark changes between matching "a" and "b", but stays the same for
925     the rest of the match, so nothing more is output. If, as a result of
926     backtracking, the mark reverts to being unset, the text "<unset>" is
927 ph10 654 output.
928    
929 ph10 1298 The callout function in pcretest returns zero (carry on matching) by
930     default, but you can use a \C item in a data line (as described above)
931 ph10 654 to change this and other parameters of the callout.
932 nigel 75
933 ph10 1298 Inserting callouts can be helpful when using pcretest to check compli-
934     cated regular expressions. For further information about callouts, see
935 nigel 75 the pcrecallout documentation.
936    
937    
938 nigel 93 NON-PRINTING CHARACTERS
939    
940 ph10 1298 When pcretest is outputting text in the compiled version of a pattern,
941     bytes other than 32-126 are always treated as non-printing characters
942 nigel 93 are are therefore shown as hex escapes.
943    
944 ph10 1298 When pcretest is outputting text that is a matched part of a subject
945     string, it behaves in the same way, unless a different locale has been
946     set for the pattern (using the /L modifier). In this case, the
947 nigel 93 isprint() function to distinguish printing and non-printing characters.
948    
949    
950 nigel 75 SAVING AND RELOADING COMPILED PATTERNS
951    
952 ph10 1298 The facilities described in this section are not available when the
953     POSIX interface to PCRE is being used, that is, when the /P pattern
954 ph10 654 modifier is specified.
955 nigel 75
956     When the POSIX interface is not in use, you can cause pcretest to write
957 ph10 1298 a compiled pattern to a file, by following the modifiers with > and a
958 nigel 75 file name. For example:
959    
960     /pattern/im >/some/file
961    
962 ph10 1298 See the pcreprecompile documentation for a discussion about saving and
963     re-using compiled patterns. Note that if the pattern was successfully
964 ph10 691 studied with JIT optimization, the JIT data cannot be saved.
965 nigel 75
966 ph10 1298 The data that is written is binary. The first eight bytes are the
967     length of the compiled pattern data followed by the length of the
968     optional study data, each written as four bytes in big-endian order
969     (most significant byte first). If there is no study data (either the
970 nigel 75 pattern was not studied, or studying did not return any data), the sec-
971 ph10 1298 ond length is zero. The lengths are followed by an exact copy of the
972     compiled pattern. If there is additional study data, this (excluding
973     any JIT data) follows immediately after the compiled pattern. After
974 ph10 691 writing the file, pcretest expects to read a new pattern.
975 nigel 75
976 ph10 1298 A saved pattern can be reloaded into pcretest by specifying < and a
977 ph10 654 file name instead of a pattern. The name of the file must not contain a
978     < character, as otherwise pcretest will interpret the line as a pattern
979 nigel 75 delimited by < characters. For example:
980    
981     re> </some/file
982 ph10 654 Compiled pattern loaded from /some/file
983 nigel 75 No study data
984    
985 ph10 1298 If the pattern was previously studied with the JIT optimization, the
986     JIT information cannot be saved and restored, and so is lost. When the
987     pattern has been loaded, pcretest proceeds to read data lines in the
988 ph10 691 usual way.
989 nigel 75
990 ph10 1298 You can copy a file written by pcretest to a different host and reload
991     it there, even if the new host has opposite endianness to the one on
992     which the pattern was compiled. For example, you can compile on an i86
993     machine and run on a SPARC machine. When a pattern is reloaded on a
994 ph10 869 host with different endianness, the confirmation message is changed to:
995 nigel 75
996 ph10 869 Compiled pattern (byte-inverted) loaded from /some/file
997    
998     The test suite contains some saved pre-compiled patterns with different
999 ph10 1298 endianness. These are reloaded using "<!" instead of just "<". This
1000 ph10 869 suppresses the "(byte-inverted)" text so that the output is the same on
1001 ph10 1298 all hosts. It also forces debugging output once the pattern has been
1002 ph10 869 reloaded.
1003    
1004 ph10 1298 File names for saving and reloading can be absolute or relative, but
1005     note that the shell facility of expanding a file name that starts with
1006 nigel 75 a tilde (~) is not available.
1007    
1008 ph10 1298 The ability to save and reload files in pcretest is intended for test-
1009     ing and experimentation. It is not intended for production use because
1010     only a single pattern can be written to a file. Furthermore, there is
1011     no facility for supplying custom character tables for use with a
1012     reloaded pattern. If the original pattern was compiled with custom
1013     tables, an attempt to match a subject string using a reloaded pattern
1014     is likely to cause pcretest to crash. Finally, if you attempt to load
1015 nigel 75 a file that is not in the correct format, the result is undefined.
1016    
1017    
1018 nigel 93 SEE ALSO
1019    
1020 ph10 1298 pcre(3), pcre16(3), pcre32(3), pcreapi(3), pcrecallout(3), pcrejit,
1021 ph10 1194 pcrematching(3), pcrepartial(d), pcrepattern(3), pcreprecompile(3).
1022 nigel 93
1023    
1024 nigel 63 AUTHOR
1025 nigel 53
1026 nigel 77 Philip Hazel
1027 ph10 99 University Computing Service
1028 nigel 93 Cambridge CB2 3QH, England.
1029 nigel 53
1030 ph10 99
1031     REVISION
1032    
1033 ph10 1320 Last updated: 26 April 2013
1034 ph10 1298 Copyright (c) 1997-2013 University of Cambridge.

Properties

Name Value
svn:eol-style native
svn:keywords "Author Date Id Revision Url"

webmaster@exim.org
ViewVC Help
Powered by ViewVC 1.1.12