<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision: 1.12 $ -->
<reference id="ref.pcre">
  <title>Regular Expression Functions (Perl-Compatible)</title>
  <titleabbrev>PCRE</titleabbrev>   

  <partintro>
   <section id="pcre.intro">
    &reftitle.intro;
    <para>
     The syntax for patterns used in these functions closely resembles
     Perl. The expression should be enclosed in the delimiters, a
     forward slash (/), for example.  Any character can be used for
     delimiter as long as it's not alphanumeric or backslash (\). If
     the delimiter character has to be used in the expression itself,
     it needs to be escaped by backslash. Since PHP 4.0.4, you can also use
     Perl-style (), {}, [], and &lt;&gt; matching delimiters.
     See <link linkend="reference.pcre.pattern.syntax">Pattern Syntax</link>
     for detailed explanation.
    </para>
    <para>
     The ending delimiter may be followed by various modifiers that
     affect the matching. 
     See <link linkend="reference.pcre.pattern.modifiers">Pattern
      Modifiers</link>.
    </para>
    <para>
     PHP also supports regular expressions using a POSIX-extended syntax
     using the <link linkend="ref.regex">POSIX-extended regex functions</link>.
    </para>
    <warning>
     <para>
      You should be aware of some limitations of PCRE. Read <ulink
       url="&url.pcre.man;">&url.pcre.man;</ulink> for more info.
     </para>
    </warning>
   </section>
   
   <section id="pcre.requirements">
    &reftitle.required;
    <para>
     Regular expression support is provided by the PCRE library
     package, which is open source software, written by Philip Hazel,
     and copyright by the University of Cambridge, England. It is
     available at <ulink url="&url.pcre;">&url.pcre;</ulink>.
    </para>
   </section>

   &reference.pcre.configure;

   <section id="pcre.configuration">
    &reftitle.runtime;
    &no.config;
   </section>

   <section id="pcre.resources">
    &reftitle.resources;
    &no.resource;
   </section>

   &reference.pcre.constants;

   <section id="pcre.examples">
    &reftitle.examples;
    <para>
     <example>
      <title>Examples of valid patterns</title>
      <itemizedlist>
       <listitem><simpara><literal>/&lt;\/\w+&gt;/</literal></simpara></listitem>
       <listitem><simpara><literal>|(\d{3})-\d+|Sm</literal></simpara></listitem>
       <listitem><simpara><literal>/^(?i)php[34]/</literal></simpara></listitem>
       <listitem><simpara><literal>{^\s+(\s+)?$}</literal></simpara></listitem>
      </itemizedlist>
     </example>
    </para>
    <para>
     <example>
      <title>Examples of invalid patterns</title>
      <itemizedlist>
       <listitem>
        <simpara>
         <literal>/href='(.*)'</literal> - missing ending delimiter
        </simpara>
       </listitem>
       <listitem>
        <simpara>
         <literal>/\w+\s*\w+/J</literal> - unknown modifier 'J'
        </simpara>
       </listitem>
       <listitem>
        <simpara>
         <literal>1-\d3-\d3-\d4|</literal> - missing starting delimiter
        </simpara>
       </listitem>
      </itemizedlist>
     </example>
    </para>
   </section>
  </partintro>

&reference.pcre.pattern.modifiers;
&reference.pcre.pattern.syntax;
&reference.pcre.functions;

</reference>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->