<?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 => 'es',
  ),
  'this' => 
  array (
    0 => 'parle.pattern.matching.php',
    1 => 'Correspondencia de patr&oacute;n',
    2 => 'Correspondencia de patr&oacute;n Parle',
  ),
  'up' => 
  array (
    0 => 'book.parle.php',
    1 => 'Parle',
  ),
  'prev' => 
  array (
    0 => 'parle.constants.php',
    1 => 'Constantes predefinidas',
  ),
  'next' => 
  array (
    0 => 'parle.examples.php',
    1 => 'Ejemplos',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'es',
    '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">Correspondencia de patrón Parle</h1>

 
 <p class="para">
  Parle soporta la correspondencia de patrón con expresiones regulares similares a flex.
  Los siguientes conjuntos de caracteres POSIX también son soportados:
  <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">
  Las clases de caracteres Unicode no están actualmente activadas por omisión, pase --enable-parle-utf32 para hacerlas disponibles.
  Una codificación particular puede ser mapeada con una regex correctamente construida.
  Por ejemplo, para corresponder al símbolo EURO codificado en UTF-8, la expresión regular <code class="literal">[\xe2][\x82][\xac]</code> puede ser utilizada.
  El patrón para una cadena codificada en UTF-8 podría ser <code class="literal">[ -\x7f]{+}[\x80-\xbf]{+}[\xc2-\xdf]{+}[\xe0-\xef]{+}[\xf0-\xff]+</code>.
 </p>

 <div id="parle.regex.chars" class="section">
  <h2 class="title">Representación de caracteres</h2>
  <p class="para">
   <table class="doctable table">
    <caption><strong>Representación de caracteres</strong></caption>
    
     <thead>
      <tr>
       <th>Secuencia</th><th>Descripción</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>\a</td><td>Alerta (campana).</td>
      </tr>

      <tr>
       <td>\b</td><td>Retroceso (Backspace).</td>
      </tr>

      <tr>
       <td>\e</td><td>Carácter ESC, \x1b.</td>
      </tr>

      <tr>
       <td>\n</td><td>Nueva línea.</td>
      </tr>

      <tr>
       <td>\r</td><td>Retorno de carro.</td>
      </tr>

      <tr>
       <td>\f</td><td>Salto de página, \x0c.</td>
      </tr>

      <tr>
       <td>\t</td><td>Tabulación horizontal, \x09.</td>
      </tr>

      <tr>
       <td>\v</td><td>Tabulación vertical, \x0b.</td>
      </tr>

      <tr>
       <td>\oct</td><td>Carácter especificado por un código octal de tres dígitos.</td>
      </tr>

      <tr>
       <td>\xhex</td><td>Carácter especificado por un código hexadecimal.</td>
      </tr>

      <tr>
       <td>\cchar</td><td>Carácter de control nombrado.</td>
      </tr>

     </tbody>
    
   </table>

  </p>
 </div>
 <div id="parle.regex.charclass" class="section">
  <h2 class="title">Clases de caracteres</h2>
  <p class="para">
   <table class="doctable table">
    <caption><strong>Clases de caracteres</strong></caption>
    
     <thead>
      <tr>
       <th>Secuencia</th><th>Descripción</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>[...]</td><td>Un solo carácter listado o contenido en un rango listado. Los rangos pueden ser combinados con los operadores <code class="literal">{+}</code> y <code class="literal">{-}</code>. Por ejemplo <code class="literal">[a-z]{+}[0-9]</code> es lo mismo que <code class="literal">[0-9a-z]</code> y <code class="literal">[a-z]{-}[aeiou]</code> es lo mismo que <code class="literal">[b-df-hj-np-tv-z]</code>.</td>
      </tr>

      <tr>
       <td>[^...]</td><td>Un solo carácter no listado y no contenido en un rango listado.</td>
      </tr>

      <tr>
       <td>.</td><td>Cualquier carácter, por omisión <code class="literal">[^\n].</code></td>
      </tr>

      <tr>
       <td>\d</td><td>Carácter numérico, <code class="literal">[0-9]</code>.</td>
      </tr>

      <tr>
       <td>\D</td><td>Carácter no numérico, <code class="literal">[^0-9]</code>.</td>
      </tr>

      <tr>
       <td>\s</td><td>Carácter de espacio en blanco, <code class="literal">[ \t\n\r\f\v]</code>.</td>
      </tr>

      <tr>
       <td>\S</td><td>Carácter no de espacio en blanco, <code class="literal">[^ \t\n\r\f\v]</code>.</td>
      </tr>

      <tr>
       <td>\w</td><td>Carácter de palabra, <code class="literal">[a-zA-Z0-9_]</code>.</td>
      </tr>

      <tr>
       <td>\W</td><td>Carácter de no palabra, <code class="literal">[^a-zA-Z0-9_]</code>.</td>
      </tr>

     </tbody>
    
   </table>

  </p>
 </div>
 <div id="parle.regex.unicodecharclass" class="section">
  <h2 class="title">Clases de caracteres Unicode</h2>
  <p class="para">
   <table class="doctable table">
    <caption><strong>Clases de caracteres Unicode</strong></caption>
    
     <thead>
      <tr>
       <th>Secuencia</th><th>Descripción</th>
      </tr>

     </thead>

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

      <tr>
       <td>\p{Cc}</td><td>Otro, control.</td>
      </tr>

      <tr>
       <td>\p{Cf}</td><td>Otro, formato.</td>
      </tr>

      <tr>
       <td>\p{Co}</td><td>Otro, uso privado.</td>
      </tr>

      <tr>
       <td>\p{Cs}</td><td>Otro, sustituto.</td>
      </tr>

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

      <tr>
       <td>\p{LC}</td><td>Letra, con casos.</td>
      </tr>

      <tr>
       <td>\p{Ll}</td><td>Letra, minúscula.</td>
      </tr>

      <tr>
       <td>\p{Lm}</td><td>Letra, modificada.</td>
      </tr>

      <tr>
       <td>\p{Lo}</td><td>Letra, otra.</td>
      </tr>

      <tr>
       <td>\p{Lt}</td><td>Letra, de título.</td>
      </tr>

      <tr>
       <td>\p{Lu}</td><td>Letra, mayúscula.</td>
      </tr>

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

      <tr>
       <td>\p{Mc}</td><td>Marca, espacio combinado.</td>
      </tr>

      <tr>
       <td>\p{Me}</td><td>Marca, encuadre.</td>
      </tr>

      <tr>
       <td>\p{Mn}</td><td>Marca, no espaciada.</td>
      </tr>

      <tr>
       <td>\p{N}</td><td>Número.</td>
      </tr>

      <tr>
       <td>\p{Nd}</td><td>Número, dígito decimal.</td>
      </tr>

      <tr>
       <td>\p{Nl}</td><td>Número, letra.</td>
      </tr>

      <tr>
       <td>\p{No}</td><td>Número, otro.</td>
      </tr>

      <tr>
       <td>\p{P}</td><td>Puntuación.</td>
      </tr>

      <tr>
       <td>\p{Pc}</td><td>Puntuación, conector.</td>
      </tr>

      <tr>
       <td>\p{Pd}</td><td>Puntuación, guion.</td>
      </tr>

      <tr>
       <td>\p{Pe}</td><td>Puntuación, cierre.</td>
      </tr>

      <tr>
       <td>\p{Pf}</td><td>Puntuación, comilla final.</td>
      </tr>

      <tr>
       <td>\p{Pi}</td><td>Puntuación, comilla inicial.</td>
      </tr>

      <tr>
       <td>\p{Po}</td><td>Puntuación, otra.</td>
      </tr>

      <tr>
       <td>\p{Ps}</td><td>Puntuación, apertura.</td>
      </tr>

      <tr>
       <td>\p{S}</td><td>Símbolo.</td>
      </tr>

      <tr>
       <td>\p{Sc}</td><td>Símbolo, moneda.</td>
      </tr>

      <tr>
       <td>\p{Sk}</td><td>Símbolo, modificado.</td>
      </tr>

      <tr>
       <td>\p{Sm}</td><td>Símbolo, matemático.</td>
      </tr>

      <tr>
       <td>\p{So}</td><td>Símbolo, otro.</td>
      </tr>

      <tr>
       <td>\p{Z}</td><td>Separador.</td>
      </tr>

      <tr>
       <td>\p{Zl}</td><td>Separador, línea.</td>
      </tr>

      <tr>
       <td>\p{Zp}</td><td>Separador, párrafo.</td>
      </tr>

      <tr>
       <td>\p{Zs}</td><td>Separador, espacio.</td>
      </tr>

     </tbody>
    
   </table>

  </p>
  <p class="para">
   Estas clases de caracteres solo están disponibles si la opción --enable-parle-utf32 ha sido pasada durante la compilación.
  </p>
 </div>
 <div id="parle.regex.alternation" class="section">
  <h2 class="title">Alternancia y repetición</h2>
  <p class="para">
   <table class="doctable table">
    <caption><strong>Alternancia y repetición</strong></caption>
    
     <thead>
      <tr>
       <th>Secuencia</th><th>Greedy</th><th>Descripción</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>...|...</td><td>-</td><td>Probar los subpatrones en alternancia.</td>
      </tr>

      <tr>
       <td>*</td><td>yes</td><td>Corresponde 0 o más veces.</td>
      </tr>

      <tr>
       <td>+</td><td>yes</td><td>Corresponde 1 o más veces.</td>
      </tr>

      <tr>
       <td>?</td><td>yes</td><td>Corresponde 0 o 1 vez.</td>
      </tr>

      <tr>
       <td>{n}</td><td>no</td><td>Corresponde exactamente n veces.</td>
      </tr>

      <tr>
       <td>{n,}</td><td>no</td><td>Corresponde al menos n veces.</td>
      </tr>

      <tr>
       <td>{n,m}</td><td>yes</td><td>Corresponde al menos n veces pero no más de m veces.</td>
      </tr>

      <tr>
       <td>*?</td><td>no</td><td>Corresponde 0 o más veces.</td>
      </tr>

      <tr>
       <td>+?</td><td>no</td><td>Corresponde 1 o más veces.</td>
      </tr>

      <tr>
       <td>??</td><td>no</td><td>Corresponde 0 o 1 vez.</td>
      </tr>

      <tr>
       <td>{n,}?</td><td>no</td><td>Corresponde al menos n veces.</td>
      </tr>

      <tr>
       <td>{n,m}?</td><td>no</td><td>Corresponde al menos n veces pero no más de m veces.</td>
      </tr>

      <tr>
       <td>{MACRO}</td><td>-</td><td>Incluye la regex MACRO en la regex actual.</td>
      </tr>

     </tbody>
    
   </table>

  </p>
 </div>
 <div id="parle.regex.anchors" class="section">
  <h2 class="title">Ancla</h2>
  <p class="para">
   <table class="doctable table">
    <caption><strong>Ancla</strong></caption>
    
     <thead>
      <tr>
       <th>Secuencia</th><th>Descripción</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>^</td><td>Comienza por una cadena o después de un retorno de línea.</td>
      </tr>

      <tr>
       <td>$</td><td>Termina por una cadena o antes de un retorno de línea.</td>
      </tr>

     </tbody>
    
   </table>

  </p>
 </div>
 <div id="parle.regex.grouping" class="section">
  <h2 class="title">Agrupamiento</h2>
  <p class="para">
   <table class="doctable table">
    <caption><strong>Agrupamiento</strong></caption>
    
     <thead>
      <tr>
       <th>Secuencia</th>
       <th>Descripción</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>(...)</td>
       <td>Agrupa una expresión regular para modificar el orden de evaluación.</td>
      </tr>

      <tr>
       <td style="vertical-align: top;">(?r-s:pattern)</td>
       <td>
        <span class="simpara">
         Aplica la opción r y omite la opción s al interpretar el patrón.
         Las opciones pueden ser cero o más de los caracteres i, s o x.
        </span>
        <span class="simpara">
         <code class="literal">i</code> significa insensible a mayúsculas y minúsculas.
        </span>
        <span class="simpara">
         <code class="literal">-i</code> significa sensible a mayúsculas y minúsculas.
        </span>
        <span class="simpara">
         <code class="literal">s</code> modifica el significado de <code class="literal">.</code> para que corresponda a cualquier carácter.
        </span>
        <span class="simpara">
         <code class="literal">-s</code> modifica el significado de <code class="literal">.</code> para que corresponda a cualquier carácter excepto <code class="literal">\n</code>.
        </span>
        <span class="simpara">
         <code class="literal">x</code> ignora los comentarios y los espacios en los patrones.
         Los espacios son ignorados excepto si están escapados por una barra invertida, contenidos en <code class="literal">&quot;&quot;s</code>,
         o aparecen dentro de un rango de caracteres.
        </span>
        <span class="simpara">
         Estas opciones pueden ser aplicadas globalmente al nivel de las reglas pasando una combinación de los indicadores de bits al analizador léxico.
        </span>
       </td>
      </tr>

      <tr>
       <td>(?# comment )</td>
       <td>Omite todo lo que está en (). El primer carácter ) encontrado termina el patrón. No es posible para el comentario contener un carácter ). El comentario puede extenderse sobre varias líneas.</td>
      </tr>

     </tbody>
    
   </table>

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