/[pcre]/code/trunk/doc/html/pcrecompat.html
ViewVC logotype

Diff of /code/trunk/doc/html/pcrecompat.html

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 75 by nigel, Sat Feb 24 21:40:37 2007 UTC revision 182 by ph10, Wed Jun 13 15:09:54 2007 UTC
# Line 17  DIFFERENCES BETWEEN PCRE AND PERL Line 17  DIFFERENCES BETWEEN PCRE AND PERL
17  </b><br>  </b><br>
18  <P>  <P>
19  This document describes the differences in the ways that PCRE and Perl handle  This document describes the differences in the ways that PCRE and Perl handle
20  regular expressions. The differences described here are with respect to Perl  regular expressions. The differences described here are mainly with respect to
21  5.8.  Perl 5.8, though PCRE versions 7.0 and later contain some features that are
22    expected to be in the forthcoming Perl 5.10.
23  </P>  </P>
24  <P>  <P>
25  1. PCRE does not have full UTF-8 support. Details of what it does have are  1. PCRE has only a subset of Perl's UTF-8 and Unicode support. Details of what
26  given in the  it does have are given in the
27  <a href="pcre.html#utf8support">section on UTF-8 support</a>  <a href="pcre.html#utf8support">section on UTF-8 support</a>
28  in the main  in the main
29  <a href="pcre.html"><b>pcre</b></a>  <a href="pcre.html"><b>pcre</b></a>
# Line 57  encountered by PCRE, an error is generat Line 58  encountered by PCRE, an error is generat
58  6. The Perl escape sequences \p, \P, and \X are supported only if PCRE is  6. The Perl escape sequences \p, \P, and \X are supported only if PCRE is
59  built with Unicode character property support. The properties that can be  built with Unicode character property support. The properties that can be
60  tested with \p and \P are limited to the general category properties such as  tested with \p and \P are limited to the general category properties such as
61  Lu and Nd.  Lu and Nd, script names such as Greek or Han, and the derived properties Any
62    and L&.
63  </P>  </P>
64  <P>  <P>
65  7. PCRE does support the \Q...\E escape for quoting substrings. Characters in  7. PCRE does support the \Q...\E escape for quoting substrings. Characters in
# Line 75  following examples: Line 77  following examples:
77  The \Q...\E sequence is recognized both inside and outside character classes.  The \Q...\E sequence is recognized both inside and outside character classes.
78  </P>  </P>
79  <P>  <P>
80  8. Fairly obviously, PCRE does not support the (?{code}) and (?p{code})  8. Fairly obviously, PCRE does not support the (?{code}) and (??{code})
81  constructions. However, there is support for recursive patterns using the  constructions. However, there is support for recursive patterns. This is not
82  non-Perl items (?R), (?number), and (?P&#62;name). Also, the PCRE "callout" feature  available in Perl 5.8, but will be in Perl 5.10. Also, the PCRE "callout"
83  allows an external function to be called during pattern matching. See the  feature allows an external function to be called during pattern matching. See
84    the
85  <a href="pcrecallout.html"><b>pcrecallout</b></a>  <a href="pcrecallout.html"><b>pcrecallout</b></a>
86  documentation for details.  documentation for details.
87  </P>  </P>
88  <P>  <P>
89  9. There are some differences that are concerned with the settings of captured  9. Subpatterns that are called recursively or as "subroutines" are always
90    treated as atomic groups in PCRE. This is like Python, but unlike Perl.
91    </P>
92    <P>
93    10. There are some differences that are concerned with the settings of captured
94  strings when part of a pattern is repeated. For example, matching "aba" against  strings when part of a pattern is repeated. For example, matching "aba" against
95  the pattern /^(a(b)?)+$/ in Perl leaves $2 unset, but in PCRE it is set to "b".  the pattern /^(a(b)?)+$/ in Perl leaves $2 unset, but in PCRE it is set to "b".
96  </P>  </P>
97  <P>  <P>
98  10. PCRE provides some extensions to the Perl regular expression facilities:  11. PCRE provides some extensions to the Perl regular expression facilities.
99    Perl 5.10 will include new features that are not in earlier versions, some of
100    which (such as named parentheses) have been in PCRE for some time. This list is
101    with respect to Perl 5.10:
102  <br>  <br>
103  <br>  <br>
104  (a) Although lookbehind assertions must match fixed length strings, each  (a) Although lookbehind assertions must match fixed length strings, each
# Line 101  meta-character matches only at the very Line 111  meta-character matches only at the very
111  <br>  <br>
112  <br>  <br>
113  (c) If PCRE_EXTRA is set, a backslash followed by a letter with no special  (c) If PCRE_EXTRA is set, a backslash followed by a letter with no special
114  meaning is faulted.  meaning is faulted. Otherwise, like Perl, the backslash is quietly ignored.
115    (Perl can be made to issue a warning.)
116  <br>  <br>
117  <br>  <br>
118  (d) If PCRE_UNGREEDY is set, the greediness of the repetition quantifiers is  (d) If PCRE_UNGREEDY is set, the greediness of the repetition quantifiers is
# Line 117  only at the first matching position in t Line 128  only at the first matching position in t
128  options for <b>pcre_exec()</b> have no Perl equivalents.  options for <b>pcre_exec()</b> have no Perl equivalents.
129  <br>  <br>
130  <br>  <br>
131  (g) The (?R), (?number), and (?P&#62;name) constructs allows for recursive pattern  (g) The callout facility is PCRE-specific.
 matching (Perl can do this using the (?p{code}) construct, which PCRE cannot  
 support.)  
 <br>  
132  <br>  <br>
 (h) PCRE supports named capturing substrings, using the Python syntax.  
133  <br>  <br>
134    (h) The partial matching facility is PCRE-specific.
135  <br>  <br>
 (i) PCRE supports the possessive quantifier "++" syntax, taken from Sun's Java  
 package.  
 <br>  
 <br>  
 (j) The (R) condition, for testing recursion, is a PCRE extension.  
136  <br>  <br>
137    (i) Patterns compiled by PCRE can be saved and re-used at a later time, even on
138    different hosts that have the other endianness.
139  <br>  <br>
 (k) The callout facility is PCRE-specific.  
140  <br>  <br>
141    (j) The alternative matching function (<b>pcre_dfa_exec()</b>) matches in a
142    different way and is not Perl-compatible.
143    </P>
144    <br><b>
145    AUTHOR
146    </b><br>
147    <P>
148    Philip Hazel
149  <br>  <br>
150  (l) The partial matching facility is PCRE-specific.  University Computing Service
151  <br>  <br>
152    Cambridge CB2 3QH, England.
153  <br>  <br>
 (m) Patterns compiled by PCRE can be saved and re-used at a later time, even on  
 different hosts that have the other endianness.  
154  </P>  </P>
155    <br><b>
156    REVISION
157    </b><br>
158  <P>  <P>
159  Last updated: 09 September 2004  Last updated: 13 June 2007
160    <br>
161    Copyright &copy; 1997-2007 University of Cambridge.
162  <br>  <br>
 Copyright &copy; 1997-2004 University of Cambridge.  
163  <p>  <p>
164  Return to the <a href="index.html">PCRE index page</a>.  Return to the <a href="index.html">PCRE index page</a>.
165  </p>  </p>

Legend:
Removed from v.75  
changed lines
  Added in v.182

  ViewVC Help
Powered by ViewVC 1.1.5