pcretest.1
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:11k
源码类别:

生物技术

开发平台:

C/C++

  1. .TH PCRETEST 1
  2. .SH NAME
  3. pcretest - a program for testing Perl-compatible regular expressions.
  4. .SH SYNOPSIS
  5. .B pcretest "[-d] [-i] [-m] [-o osize] [-p] [-t] [source] [destination]"
  6. fBpcretestfR was written as a test program for the PCRE regular expression
  7. library itself, but it can also be used for experimenting with regular
  8. expressions. This man page describes the features of the test program; for
  9. details of the regular expressions themselves, see the fBpcrefR man page.
  10. .SH OPTIONS
  11. .TP 10
  12. fB-dfR
  13. Behave as if each regex had the fB/DfR modifier (see below); the internal
  14. form is output after compilation.
  15. .TP 10
  16. fB-ifR
  17. Behave as if each regex had the fB/IfR modifier; information about the
  18. compiled pattern is given after compilation.
  19. .TP 10
  20. fB-mfR
  21. Output the size of each compiled pattern after it has been compiled. This is
  22. equivalent to adding /M to each regular expression. For compatibility with
  23. earlier versions of pcretest, fB-sfR is a synonym for fB-mfR.
  24. .TP 10
  25. fB-ofR fIosizefR
  26. Set the number of elements in the output vector that is used when calling PCRE
  27. to be fIosizefR. The default value is 45, which is enough for 14 capturing
  28. subexpressions. The vector size can be changed for individual matching calls by
  29. including \O in the data line (see below).
  30. .TP 10
  31. fB-pfR
  32. Behave as if each regex has fB/PfR modifier; the POSIX wrapper API is used
  33. to call PCRE. None of the other options has any effect when fB-pfR is set.
  34. .TP 10
  35. fB-tfR
  36. Run each compile, study, and match 20000 times with a timer, and output
  37. resulting time per compile or match (in milliseconds). Do not set fB-tfR with
  38. fB-mfR, because you will then get the size output 20000 times and the timing
  39. will be distorted.
  40. .SH DESCRIPTION
  41. If fBpcretestfR is given two filename arguments, it reads from the first and
  42. writes to the second. If it is given only one filename argument, it reads from
  43. that file and writes to stdout. Otherwise, it reads from stdin and writes to
  44. stdout, and prompts for each line of input, using "re>" to prompt for regular
  45. expressions, and "data>" to prompt for data lines.
  46. The program handles any number of sets of input on a single input file. Each
  47. set starts with a regular expression, and continues with any number of data
  48. lines to be matched against the pattern. An empty line signals the end of the
  49. data lines, at which point a new regular expression is read. The regular
  50. expressions are given enclosed in any non-alphameric delimiters other than
  51. backslash, for example
  52.   /(a|bc)x+yz/
  53. White space before the initial delimiter is ignored. A regular expression may
  54. be continued over several input lines, in which case the newline characters are
  55. included within it. It is possible to include the delimiter within the pattern
  56. by escaping it, for example
  57.   /abc\/def/
  58. If you do so, the escape and the delimiter form part of the pattern, but since
  59. delimiters are always non-alphameric, this does not affect its interpretation.
  60. If the terminating delimiter is immediately followed by a backslash, for
  61. example,
  62.   /abc/\
  63. then a backslash is added to the end of the pattern. This is done to provide a
  64. way of testing the error condition that arises if a pattern finishes with a
  65. backslash, because
  66.   /abc\/
  67. is interpreted as the first line of a pattern that starts with "abc/", causing
  68. pcretest to read the next line as a continuation of the regular expression.
  69. .SH PATTERN MODIFIERS
  70. The pattern may be followed by fBifR, fBmfR, fBsfR, or fBxfR to set the
  71. PCRE_CASELESS, PCRE_MULTILINE, PCRE_DOTALL, or PCRE_EXTENDED options,
  72. respectively. For example:
  73.   /caseless/i
  74. These modifier letters have the same effect as they do in Perl. There are
  75. others which set PCRE options that do not correspond to anything in Perl:
  76. fB/AfR, fB/EfR, and fB/XfR set PCRE_ANCHORED, PCRE_DOLLAR_ENDONLY, and
  77. PCRE_EXTRA respectively.
  78. Searching for all possible matches within each subject string can be requested
  79. by the fB/gfR or fB/GfR modifier. After finding a match, PCRE is called
  80. again to search the remainder of the subject string. The difference between
  81. fB/gfR and fB/GfR is that the former uses the fIstartoffsetfR argument to
  82. fBpcre_exec()fR to start searching at a new point within the entire string
  83. (which is in effect what Perl does), whereas the latter passes over a shortened
  84. substring. This makes a difference to the matching process if the pattern
  85. begins with a lookbehind assertion (including \b or \B).
  86. If any call to fBpcre_exec()fR in a fB/gfR or fB/GfR sequence matches an
  87. empty string, the next call is done with the PCRE_NOTEMPTY and PCRE_ANCHORED
  88. flags set in order to search for another, non-empty, match at the same point.
  89. If this second match fails, the start offset is advanced by one, and the normal
  90. match is retried. This imitates the way Perl handles such cases when using the
  91. fB/gfR modifier or the fBsplit()fR function.
  92. There are a number of other modifiers for controlling the way fBpcretestfR
  93. operates.
  94. The fB/+fR modifier requests that as well as outputting the substring that
  95. matched the entire pattern, pcretest should in addition output the remainder of
  96. the subject string. This is useful for tests where the subject contains
  97. multiple copies of the same substring.
  98. The fB/LfR modifier must be followed directly by the name of a locale, for
  99. example,
  100.   /pattern/Lfr
  101. For this reason, it must be the last modifier letter. The given locale is set,
  102. fBpcre_maketables()fR is called to build a set of character tables for the
  103. locale, and this is then passed to fBpcre_compile()fR when compiling the
  104. regular expression. Without an fB/LfR modifier, NULL is passed as the tables
  105. pointer; that is, fB/LfR applies only to the expression on which it appears.
  106. The fB/IfR modifier requests that fBpcretestfR output information about the
  107. compiled expression (whether it is anchored, has a fixed first character, and
  108. so on). It does this by calling fBpcre_fullinfo()fR after compiling an
  109. expression, and outputting the information it gets back. If the pattern is
  110. studied, the results of that are also output.
  111. The fB/DfR modifier is a PCRE debugging feature, which also assumes fB/IfR.
  112. It causes the internal form of compiled regular expressions to be output after
  113. compilation.
  114. The fB/SfR modifier causes fBpcre_study()fR to be called after the
  115. expression has been compiled, and the results used when the expression is
  116. matched.
  117. The fB/MfR modifier causes the size of memory block used to hold the compiled
  118. pattern to be output.
  119. The fB/PfR modifier causes fBpcretestfR to call PCRE via the POSIX wrapper
  120. API rather than its native API. When this is done, all other modifiers except
  121. fB/ifR, fB/mfR, and fB/+fR are ignored. REG_ICASE is set if fB/ifR is
  122. present, and REG_NEWLINE is set if fB/mfR is present. The wrapper functions
  123. force PCRE_DOLLAR_ENDONLY always, and PCRE_DOTALL unless REG_NEWLINE is set.
  124. The fB/8fR modifier causes fBpcretestfR to call PCRE with the PCRE_UTF8
  125. option set. This turns on the (currently incomplete) support for UTF-8
  126. character handling in PCRE, provided that it was compiled with this support
  127. enabled. This modifier also causes any non-printing characters in output
  128. strings to be printed using the \x{hh...} notation if they are valid UTF-8
  129. sequences.
  130. .SH DATA LINES
  131. Before each data line is passed to fBpcre_exec()fR, leading and trailing
  132. whitespace is removed, and it is then scanned for \ escapes. The following are
  133. recognized:
  134.   \a         alarm (= BEL)
  135.   \b         backspace
  136.   \e         escape
  137.   \f         formfeed
  138.   \n         newline
  139.   \r         carriage return
  140.   \t         tab
  141.   \v         vertical tab
  142.   \nnn       octal character (up to 3 octal digits)
  143.   \xhh       hexadecimal character (up to 2 hex digits)
  144.   \x{hh...}  hexadecimal UTF-8 character
  145.   \A         pass the PCRE_ANCHORED option to fBpcre_exec()fR
  146.   \B         pass the PCRE_NOTBOL option to fBpcre_exec()fR
  147.   \Cdd       call pcre_copy_substring() for substring dd
  148.                 after a successful match (any decimal number
  149.                 less than 32)
  150.   \Gdd       call pcre_get_substring() for substring dd
  151.                 after a successful match (any decimal number
  152.                 less than 32)
  153.   \L         call pcre_get_substringlist() after a
  154.                 successful match
  155.   \N         pass the PCRE_NOTEMPTY option to fBpcre_exec()fR
  156.   \Odd       set the size of the output vector passed to
  157.                 fBpcre_exec()fR to dd (any number of decimal
  158.                 digits)
  159.   \Z         pass the PCRE_NOTEOL option to fBpcre_exec()fR
  160. When \O is used, it may be higher or lower than the size set by the fB-OfR
  161. option (or defaulted to 45); \O applies only to the call of fBpcre_exec()fR
  162. for the line in which it appears.
  163. A backslash followed by anything else just escapes the anything else. If the
  164. very last character is a backslash, it is ignored. This gives a way of passing
  165. an empty line as data, since a real empty line terminates the data input.
  166. If fB/PfR was present on the regex, causing the POSIX wrapper API to be used,
  167. only fBBfR, and fBZfR have any effect, causing REG_NOTBOL and REG_NOTEOL
  168. to be passed to fBregexec()fR respectively.
  169. The use of \x{hh...} to represent UTF-8 characters is not dependent on the use
  170. of the fB/8fR modifier on the pattern. It is recognized always. There may be
  171. any number of hexadecimal digits inside the braces. The result is from one to
  172. six bytes, encoded according to the UTF-8 rules.
  173. .SH OUTPUT FROM PCRETEST
  174. When a match succeeds, pcretest outputs the list of captured substrings that
  175. fBpcre_exec()fR returns, starting with number 0 for the string that matched
  176. the whole pattern. Here is an example of an interactive pcretest run.
  177.   $ pcretest
  178.   PCRE version 2.06 08-Jun-1999
  179.     re> /^abc(\d+)/
  180.   data> abc123
  181.    0: abc123
  182.    1: 123
  183.   data> xyz
  184.   No match
  185. If the strings contain any non-printing characters, they are output as \0x
  186. escapes, or as \x{...} escapes if the fB/8fR modifier was present on the
  187. pattern. If the pattern has the fB/+fR modifier, then the output for
  188. substring 0 is followed by the the rest of the subject string, identified by
  189. "0+" like this:
  190.     re> /cat/+
  191.   data> cataract
  192.    0: cat
  193.    0+ aract
  194. If the pattern has the fB/gfR or fB/GfR modifier, the results of successive
  195. matching attempts are output in sequence, like this:
  196.     re> /\Bi(\w\w)/g
  197.   data> Mississippi
  198.    0: iss
  199.    1: ss
  200.    0: iss
  201.    1: ss
  202.    0: ipp
  203.    1: pp
  204. "No match" is output only if the first match attempt fails.
  205. If any of the sequences fB\CfR, fB\GfR, or fB\LfR are present in a
  206. data line that is successfully matched, the substrings extracted by the
  207. convenience functions are output with C, G, or L after the string number
  208. instead of a colon. This is in addition to the normal full list. The string
  209. length (that is, the return from the extraction function) is given in
  210. parentheses after each string for fB\CfR and fB\GfR.
  211. Note that while patterns can be continued over several lines (a plain ">"
  212. prompt is used for continuations), data lines may not. However newlines can be
  213. included in data by means of the \n escape.
  214. .SH AUTHOR
  215. Philip Hazel <ph10@cam.ac.uk>
  216. .br
  217. University Computing Service,
  218. .br
  219. New Museums Site,
  220. .br
  221. Cambridge CB2 3QG, England.
  222. .br
  223. Phone: +44 1223 334714
  224. Last updated: 15 August 2001
  225. .br
  226. Copyright (c) 1997-2001 University of Cambridge.