<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/book.parle.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'fr',
  ),
  'this' => 
  array (
    0 => 'parle.pattern.matching.php',
    1 => 'Correspondance de paterne',
    2 => 'Correspondance de paterne Parle',
  ),
  'up' => 
  array (
    0 => 'book.parle.php',
    1 => 'Parle',
  ),
  'prev' => 
  array (
    0 => 'parle.constants.php',
    1 => 'Constantes pr&eacute;-d&eacute;finies',
  ),
  'next' => 
  array (
    0 => 'parle.examples.php',
    1 => 'Exemples',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'reference/parle/pattern.matching.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="parle.pattern.matching" class="chapter">
 <h1 class="title">Correspondance de paterne Parle</h1>

 
 <p class="para">
  Parle supporte la correspondance de paterne avec des expressions régulières similaires à flex.
  Les ensembles de caractères POSIX suivants sont également supportés :
  <span class="simplelist"><code class="literal">[:alnum:]</code>, <code class="literal">[:alpha:]</code>, <code class="literal">[:blank:]</code>, <code class="literal">[:cntrl:]</code>, <code class="literal">[:digit:]</code>, <code class="literal">[:graph:]</code>, <code class="literal">[:lower:]</code>, <code class="literal">[:print:]</code>, <code class="literal">[:punct:]</code>, <code class="literal">[:space:]</code>, <code class="literal">[:upper:]</code>, <code class="literal">[:xdigit:]</code></span>.
 </p>
 <p class="para">
  Les classes de caractères Unicode ne sont actuellement pas activées par défaut, passez --enable-parle-utf32 pour les rendre disponibles.
  Un encodage particulier peut être mappé avec une regex correctement construite.
  Par exemple, pour correspondre au symbole EURO encodé en UTF-8, l&#039;expression régulière <code class="literal">[\xe2][\x82][\xac]</code> peut être utilisée.
  Le paterne pour une chaîne encodée en UTF-8 pourrait être <code class="literal">[ -\x7f]{+}[\x80-\xbf]{+}[\xc2-\xdf]{+}[\xe0-\xef]{+}[\xf0-\xff]+</code>.
 </p>

 <div id="parle.regex.chars" class="section">
  <h2 class="title">Représentation des caractères</h2>
  <p class="para">
   <table class="doctable table">
    <caption><strong>Représentation des caractères</strong></caption>
    
     <thead>
      <tr>
       <th>Séquence</th><th>Description</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>\a</td><td>Alerte (cloche).</td>
      </tr>

      <tr>
       <td>\b</td><td>Retour arrière (Backspace).</td>
      </tr>

      <tr>
       <td>\e</td><td>Caractère ESC, \x1b.</td>
      </tr>

      <tr>
       <td>\n</td><td>Nouvelle ligne.</td>
      </tr>

      <tr>
       <td>\r</td><td>Retour chariot.</td>
      </tr>

      <tr>
       <td>\f</td><td>Saut de page, \x0c.</td>
      </tr>

      <tr>
       <td>\t</td><td>Tabulation horizontale, \x09.</td>
      </tr>

      <tr>
       <td>\v</td><td>Tabulation verticale, \x0b.</td>
      </tr>

      <tr>
       <td>\oct</td><td>Caractère spécifié par un code octal à trois chiffres.</td>
      </tr>

      <tr>
       <td>\xhex</td><td>Caractère spécifié par un code hexadécimal.</td>
      </tr>

      <tr>
       <td>\cchar</td><td>Caractère de contrôle nommé.</td>
      </tr>

     </tbody>
    
   </table>

  </p>
 </div>
 <div id="parle.regex.charclass" class="section">
  <h2 class="title">Classes de caractères</h2>
  <p class="para">
   <table class="doctable table">
    <caption><strong>Classes de caractères</strong></caption>
    
     <thead>
      <tr>
       <th>Sequence</th><th>Description</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>[...]</td><td>Un seul caractère listé ou contenu dans une plage listée. Les plages peuvent être combinées avec les opérateurs <code class="literal">{+}</code> et <code class="literal">{-}</code>. Par exemple <code class="literal">[a-z]{+}[0-9]</code> est la même chose que <code class="literal">[0-9a-z]</code> et <code class="literal">[a-z]{-}[aeiou]</code> est la même chose que <code class="literal">[b-df-hj-np-tv-z]</code>.</td>
      </tr>

      <tr>
       <td>[^...]</td><td>Un seul caractère non listé et non contenu dans une plage listée.</td>
      </tr>

      <tr>
       <td>.</td><td>N&#039;importe quel caractère, par défaut <code class="literal">[^\n].</code></td>
      </tr>

      <tr>
       <td>\d</td><td>Caractère numérique, <code class="literal">[0-9]</code>.</td>
      </tr>

      <tr>
       <td>\D</td><td>Caractère non numérique, <code class="literal">[^0-9]</code>.</td>
      </tr>

      <tr>
       <td>\s</td><td>Caractère d&#039;espace blanc, <code class="literal">[ \t\n\r\f\v]</code>.</td>
      </tr>

      <tr>
       <td>\S</td><td>Caractère non d&#039;espace blanc, <code class="literal">[^ \t\n\r\f\v]</code>.</td>
      </tr>

      <tr>
       <td>\w</td><td>Caractère de mot, <code class="literal">[a-zA-Z0-9_]</code>.</td>
      </tr>

      <tr>
       <td>\W</td><td>Caractère de non mot, <code class="literal">[^a-zA-Z0-9_]</code>.</td>
      </tr>

     </tbody>
    
   </table>

  </p>
 </div>
 <div id="parle.regex.unicodecharclass" class="section">
  <h2 class="title">Classes de caractères Unicode</h2>
  <p class="para">
   <table class="doctable table">
    <caption><strong>Classes de caractères Unicode</strong></caption>
    
     <thead>
      <tr>
       <th>Sequence</th><th>Description</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>\p{C}</td><td>Autre.</td>
      </tr>

      <tr>
       <td>\p{Cc}</td><td>Autre, contrôle.</td>
      </tr>

      <tr>
       <td>\p{Cf}</td><td>Autre, format.</td>
      </tr>

      <tr>
       <td>\p{Co}</td><td>Autre, utilisation privée.</td>
      </tr>

      <tr>
       <td>\p{Cs}</td><td>Autre, substitut.</td>
      </tr>

      <tr>
       <td>\p{L}</td><td>Lettre.</td>
      </tr>

      <tr>
       <td>\p{LC}</td><td>Lettre, casée.</td>
      </tr>

      <tr>
       <td>\p{Ll}</td><td>Lettre, minuscule.</td>
      </tr>

      <tr>
       <td>\p{Lm}</td><td>Lettre, modifiée.</td>
      </tr>

      <tr>
       <td>\p{Lo}</td><td>Lettre, autre.</td>
      </tr>

      <tr>
       <td>\p{Lt}</td><td>Lettre, de titre.</td>
      </tr>

      <tr>
       <td>\p{Lu}</td><td>Lettre, majuscule.</td>
      </tr>

      <tr>
       <td>\p{M}</td><td>Marque.</td>
      </tr>

      <tr>
       <td>\p{Mc}</td><td>Marque, espace combiné.</td>
      </tr>

      <tr>
       <td>\p{Me}</td><td>Marque, encadrant.</td>
      </tr>

      <tr>
       <td>\p{Mn}</td><td>Marque, non espacé.</td>
      </tr>

      <tr>
       <td>\p{N}</td><td>Nombre.</td>
      </tr>

      <tr>
       <td>\p{Nd}</td><td>Nombre, chiffre décimal.</td>
      </tr>

      <tr>
       <td>\p{Nl}</td><td>Nombre, lettre.</td>
      </tr>

      <tr>
       <td>\p{No}</td><td>Nombre, autre.</td>
      </tr>

      <tr>
       <td>\p{P}</td><td>Ponctuation.</td>
      </tr>

      <tr>
       <td>\p{Pc}</td><td>Ponctuation, connecteur.</td>
      </tr>

      <tr>
       <td>\p{Pd}</td><td>Ponctuation, tiret.</td>
      </tr>

      <tr>
       <td>\p{Pe}</td><td>Ponctuation, fermeture.</td>
      </tr>

      <tr>
       <td>\p{Pf}</td><td>Ponctuation, guillemet final.</td>
      </tr>

      <tr>
       <td>\p{Pi}</td><td>Ponctuation, guillemet initial.</td>
      </tr>

      <tr>
       <td>\p{Po}</td><td>Ponctuation, autre.</td>
      </tr>

      <tr>
       <td>\p{Ps}</td><td>Ponctuation, ouverture.</td>
      </tr>

      <tr>
       <td>\p{S}</td><td>Symbole.</td>
      </tr>

      <tr>
       <td>\p{Sc}</td><td>Symbole, devise.</td>
      </tr>

      <tr>
       <td>\p{Sk}</td><td>Symbole, modifié.</td>
      </tr>

      <tr>
       <td>\p{Sm}</td><td>Symbole, math.</td>
      </tr>

      <tr>
       <td>\p{So}</td><td>Symbole, autre.</td>
      </tr>

      <tr>
       <td>\p{Z}</td><td>Séparateur.</td>
      </tr>

      <tr>
       <td>\p{Zl}</td><td>Séparateur, ligne.</td>
      </tr>

      <tr>
       <td>\p{Zp}</td><td>Séparateur, paragraphe.</td>
      </tr>

      <tr>
       <td>\p{Zs}</td><td>Séparateur, espace.</td>
      </tr>

     </tbody>
    
   </table>

  </p>
  <p class="para">
   Ces classes de caractères ne sont disponibles que si l&#039;option --enable-parle-utf32 a été passée lors de la compilation.
  </p>
 </div>
 <div id="parle.regex.alternation" class="section">
  <h2 class="title">Alternance et répétition</h2>
  <p class="para">
   <table class="doctable table">
    <caption><strong>Alternance et répétition</strong></caption>
    
     <thead>
      <tr>
       <th>Sequence</th><th>Greedy</th><th>Description</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>...|...</td><td>-</td><td>Essayer les sous-paterne en alternance.</td>
      </tr>

      <tr>
       <td>*</td><td>yes</td><td>Correspond 0 ou plusieurs fois.</td>
      </tr>

      <tr>
       <td>+</td><td>yes</td><td>Correspond 1 ou plusieurs fois.</td>
      </tr>

      <tr>
       <td>?</td><td>yes</td><td>Correspond 0 ou 1 fois.</td>
      </tr>

      <tr>
       <td>{n}</td><td>no</td><td>Correspond exactement n fois.</td>
      </tr>

      <tr>
       <td>{n,}</td><td>no</td><td>Correspond au moins n fois.</td>
      </tr>

      <tr>
       <td>{n,m}</td><td>yes</td><td>Correspond au moins n fois mais pas plus de m fois.</td>
      </tr>

      <tr>
       <td>*?</td><td>no</td><td>Correspond 0 ou plusieurs fois.</td>
      </tr>

      <tr>
       <td>+?</td><td>no</td><td>Correspond 1 ou plusieurs fois.</td>
      </tr>

      <tr>
       <td>??</td><td>no</td><td>Correspond 0 ou 1 fois.</td>
      </tr>

      <tr>
       <td>{n,}?</td><td>no</td><td>Correspond au moins n fois.</td>
      </tr>

      <tr>
       <td>{n,m}?</td><td>no</td><td>Correspond au moins n fois mais pas plus de m fois.</td>
      </tr>

      <tr>
       <td>{MACRO}</td><td>-</td><td>Inclut la regex MACRO dans la regex courante.</td>
      </tr>

     </tbody>
    
   </table>

  </p>
 </div>
 <div id="parle.regex.anchors" class="section">
  <h2 class="title">Ancre</h2>
  <p class="para">
   <table class="doctable table">
    <caption><strong>Ancre</strong></caption>
    
     <thead>
      <tr>
       <th>Sequence</th><th>Description</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>^</td><td>Commence par une chaîne ou après un retour à la ligne.</td>
      </tr>

      <tr>
       <td>$</td><td>Finit par une chaîne ou avant un retour à la ligne.</td>
      </tr>

     </tbody>
    
   </table>

  </p>
 </div>
 <div id="parle.regex.grouping" class="section">
  <h2 class="title">Regroupement</h2>
  <p class="para">
   <table class="doctable table">
    <caption><strong>Regroupement</strong></caption>
    
     <thead>
      <tr>
       <th>Sequence</th>
       <th>Description</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>(...)</td>
       <td>Regroupe une expression régulière pour modifier l&#039;ordre d&#039;évaluation.</td>
      </tr>

      <tr>
       <td style="vertical-align: top;">(?r-s:pattern)</td>
       <td>
        <span class="simpara">
         Applique l&#039;option r et omet l&#039;option s lors de l&#039;interprétation du paterne.
         Les options peuvent être zéro ou plusieurs des caractères i, s ou x.
        </span>
        <span class="simpara">
         <code class="literal">i</code> signifie insensible à la casse.
        </span>
        <span class="simpara">
         <code class="literal">-i</code> signifie sensible à la casse.
        </span>
        <span class="simpara">
         <code class="literal">s</code> modifie le sens de <code class="literal">.</code> pour correspondre à n&#039;importe quel caractère.
        </span>
        <span class="simpara">
         <code class="literal">-s</code> modifie le sens de <code class="literal">.</code> pour correspondre à n&#039;importe quel caractère sauf <code class="literal">\n</code>.
        </span>
        <span class="simpara">
         <code class="literal">x</code> ignore les commentaires et les espaces dans les paterne.
         Les espaces sont ignorés sauf s&#039;ils sont échappés par un backslash, contenus dans des <code class="literal">&quot;&quot;s</code>,
         ou apparaissent à l&#039;intérieur d&#039;une plage de caractères.
        </span>
        <span class="simpara">
         Ces options peuvent être appliquées globalement au niveau des règles en passant une combinaison des indicateurs de bits à l&#039;analyseur lexical.
        </span>
       </td>
      </tr>

      <tr>
       <td>(?# comment )</td>
       <td>Omet tout ce qui est dans (). Le premier caractère ) rencontré termine le paterne. Il n&#039;est pas possible pour le commentaire de contenir un caractère ). Le commentaire peut s&#039;étendre sur plusieurs lignes.</td>
      </tr>

     </tbody>
    
   </table>

  </p>
 </div>
</div>
<?php manual_footer($setup); ?>