программа для тестирования регулярных выражений, совместимых с Perl (a program for testing Perl-compatible regular expressions.)
SAVING AND RELOADING COMPILED PATTERNS
The facilities described in this section are not available when
the POSIX interface to PCRE is being used, that is, when the /P
pattern modifier is specified.
When the POSIX interface is not in use, you can cause pcretest
to
write a compiled pattern to a file, by following the modifiers
with > and a file name. For example:
/pattern/im >/some/file
See the pcreprecompile
documentation for a discussion about
saving and re-using compiled patterns. Note that if the pattern
was successfully studied with JIT optimization, the JIT data
cannot be saved.
The data that is written is binary. The first eight bytes are the
length of the compiled pattern data followed by the length of the
optional study data, each written as four bytes in big-endian
order (most significant byte first). If there is no study data
(either the pattern was not studied, or studying did not return
any data), the second length is zero. The lengths are followed by
an exact copy of the compiled pattern. If there is additional
study data, this (excluding any JIT data) follows immediately
after the compiled pattern. After writing the file, pcretest
expects to read a new pattern.
A saved pattern can be reloaded into pcretest
by specifying < and
a file name instead of a pattern. There must be no space between
< and the file name, which must not contain a < character, as
otherwise pcretest
will interpret the line as a pattern delimited
by < characters. For example:
re> </some/file
Compiled pattern loaded from /some/file
No study data
If the pattern was previously studied with the JIT optimization,
the JIT information cannot be saved and restored, and so is lost.
When the pattern has been loaded, pcretest
proceeds to read data
lines in the usual way.
You can copy a file written by pcretest
to a different host and
reload it there, even if the new host has opposite endianness to
the one on which the pattern was compiled. For example, you can
compile on an i86 machine and run on a SPARC machine. When a
pattern is reloaded on a host with different endianness, the
confirmation message is changed to:
Compiled pattern (byte-inverted) loaded from /some/file
The test suite contains some saved pre-compiled patterns with
different endianness. These are reloaded using "<!" instead of
just "<". This suppresses the "(byte-inverted)" text so that the
output is the same on all hosts. It also forces debugging output
once the pattern has been reloaded.
File names for saving and reloading can be absolute or relative,
but note that the shell facility of expanding a file name that
starts with a tilde (~) is not available.
The ability to save and reload files in pcretest
is intended for
testing and experimentation. It is not intended for production
use because only a single pattern can be written to a file.
Furthermore, there is no facility for supplying custom character
tables for use with a reloaded pattern. If the original pattern
was compiled with custom tables, an attempt to match a subject
string using a reloaded pattern is likely to cause pcretest
to
crash. Finally, if you attempt to load a file that is not in the
correct format, the result is undefined.