<?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 => 'pt_BR',
  ),
  'this' => 
  array (
    0 => 'parle.pattern.matching.php',
    1 => 'Correspond&ecirc;ncia de padr&otilde;es',
    2 => 'Correspond&ecirc;ncia de padr&otilde;es do 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 => 'Exemplos',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'pt_BR',
    '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">Correspondência de padrões do Parle</h1>

 
 <p class="para">
  O Parle suporta correspondência a expressões regulares semelhantes ao Flex.
  Também são suportados os seguintes conjuntos de caracteres POSIX:
  <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">
  As classes de caracteres Unicode não estão habilitadas por padrão. Use --enable-parle-utf32 para torná-las disponíveis.
  Uma codificação específica pode ser mapeada com uma expressão regular construída corretamente.
  Por exemplo, para corresponder ao símbolo EURO codificado em UTF-8, a expressão regular <code class="literal">[\xe2][\x82][\xac]</code> pode ser usada.
  O padrão para uma string codificada em UTF-8 poderia 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">Representações de caracteres</h2>
  <p class="para">
   <table class="doctable table">
    <caption><strong>Representações de caracteres</strong></caption>
    
     <thead>
      <tr>
       <th>Sequência</th><th>Descrição</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>\a</td><td>Alerta sonoro.</td>
      </tr>

      <tr>
       <td>\b</td><td>Backspace.</td>
      </tr>

      <tr>
       <td>\e</td><td>ESC, \x1b.</td>
      </tr>

      <tr>
       <td>\n</td><td>Nova linha.</td>
      </tr>

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

      <tr>
       <td>\f</td><td>Alimentação de formulário, \x0c.</td>
      </tr>

      <tr>
       <td>\t</td><td>Tabulação horizontal, \x09.</td>
      </tr>

      <tr>
       <td>\v</td><td>Tabulação vertical, \x0b.</td>
      </tr>

      <tr>
       <td>\oct</td><td>Caractere especificado por um código octal de três dígitos.</td>
      </tr>

      <tr>
       <td>\xhex</td><td>Caractere especificado por um código hexadecimal.</td>
      </tr>

      <tr>
       <td>\cchar</td><td>Caractere de controle nomeado.</td>
      </tr>

     </tbody>
    
   </table>

  </p>
 </div>
 <div id="parle.regex.charclass" class="section">
  <h2 class="title">Classes de caracteres</h2>
  <p class="para">
   <table class="doctable table">
    <caption><strong>Classes de caracteres</strong></caption>
    
     <thead>
      <tr>
       <th>Sequência</th><th>Descrição</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>[...]</td><td>Um único caractere listado ou contido em um intervalo listado. Intervalos podem ser combinados com os operadores <code class="literal">{+}</code> e <code class="literal">{-}</code>. Por exemplo, <code class="literal">[a-z]{+}[0-9]</code> é o mesmo que <code class="literal">[0-9a-z]</code> e <code class="literal">[a-z]{-}[aeiou]</code> é o mesmo que <code class="literal">[b-df-hj-np-tv-z]</code>.</td>
      </tr>

      <tr>
       <td>[^...]</td><td>Um único caractere não listado e não contido em um intervalo listado.</td>
      </tr>

      <tr>
       <td>.</td><td>Qualquer caractere, padrão <code class="literal">[^\n].</code></td>
      </tr>

      <tr>
       <td>\d</td><td>Caractere de dígito, <code class="literal">[0-9]</code>.</td>
      </tr>

      <tr>
       <td>\D</td><td>Caractere não-dígito, <code class="literal">[^0-9]</code>.</td>
      </tr>

      <tr>
       <td>\s</td><td>Caractere de espaço em branco, <code class="literal">[ \t\n\r\f\v]</code>.</td>
      </tr>

      <tr>
       <td>\S</td><td>Caractere sem espaço em branco, <code class="literal">[^ \t\n\r\f\v]</code>.</td>
      </tr>

      <tr>
       <td>\w</td><td>Caractere de palavra, <code class="literal">[a-zA-Z0-9_]</code>.</td>
      </tr>

      <tr>
       <td>\W</td><td>Caractere que não é de palavra, <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 caractere Unicode</h2>
  <p class="para">
   <table class="doctable table">
    <caption><strong>Classes de caractere Unicode</strong></caption>
    
     <thead>
      <tr>
       <th>Sequência</th><th>Descrição</th>
      </tr>

     </thead>

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

      <tr>
       <td>\p{Cc}</td><td>Outro, controle.</td>
      </tr>

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

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

      <tr>
       <td>\p{Cs}</td><td>Outro, substituto.</td>
      </tr>

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

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

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

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

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

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

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

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

      <tr>
       <td>\p{Mc}</td><td>Marca, combinação de espaço.</td>
      </tr>

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

      <tr>
       <td>\p{Mn}</td><td>Marca, sem espaçamento.</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, outro.</td>
      </tr>

      <tr>
       <td>\p{P}</td><td>Pontuação.</td>
      </tr>

      <tr>
       <td>\p{Pc}</td><td>Pontuação, conector.</td>
      </tr>

      <tr>
       <td>\p{Pd}</td><td>Pontuação, traço.</td>
      </tr>

      <tr>
       <td>\p{Pe}</td><td>Pontuação, fechamento.</td>
      </tr>

      <tr>
       <td>\p{Pf}</td><td>Pontuação, aspas de fechamento.</td>
      </tr>

      <tr>
       <td>\p{Pi}</td><td>Pontuação, aspas de abertura.</td>
      </tr>

      <tr>
       <td>\p{Po}</td><td>Pontuação, outro.</td>
      </tr>

      <tr>
       <td>\p{Ps}</td><td>Pontuação, abertura.</td>
      </tr>

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

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

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

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

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

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

      <tr>
       <td>\p{Zl}</td><td>Separador, linha.</td>
      </tr>

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

      <tr>
       <td>\p{Zs}</td><td>Separador, espaço.</td>
      </tr>

     </tbody>
    
   </table>

  </p>
  <p class="para">
   Essas classes de caracteres só estarão disponíveis se a opção --enable-parle-utf32 tiver sido passada no momento da compilação.
  </p>
 </div>
 <div id="parle.regex.alternation" class="section">
  <h2 class="title">Alternância e repetição</h2>
  <p class="para">
   <table class="doctable table">
    <caption><strong>Alternância e repetição</strong></caption>
    
     <thead>
      <tr>
       <th>Sequência</th><th>Guloso</th><th>Descrição</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>...|...</td><td>-</td><td>Tenta subpadrões alternadamente.</td>
      </tr>

      <tr>
       <td>*</td><td>sim</td><td>Corresponde 0 ou mais vezes.</td>
      </tr>

      <tr>
       <td>+</td><td>sim</td><td>Corresponde 1 ou mais vezes.</td>
      </tr>

      <tr>
       <td>?</td><td>sim</td><td>Corresponde 0 ou 1 vez.</td>
      </tr>

      <tr>
       <td>{n}</td><td>no</td><td>Corresponde exatamente n vezes.</td>
      </tr>

      <tr>
       <td>{n,}</td><td>sim</td><td>Corresponde pelo menos n vezes.</td>
      </tr>

      <tr>
       <td>{n,m}</td><td>sim</td><td>Corresponde pelo menos n vezes mas não mais que m vezes.</td>
      </tr>

      <tr>
       <td>*?</td><td>não</td><td>Corresponde 1 ou mais vezes.</td>
      </tr>

      <tr>
       <td>+?</td><td>não</td><td>Corresponde 1 ou mais vezes.</td>
      </tr>

      <tr>
       <td>??</td><td>não</td><td>Corresponde 0 ou 1 vez.</td>
      </tr>

      <tr>
       <td>{n,}?</td><td>não</td><td>Corresponde pelo menos n vezes.</td>
      </tr>

      <tr>
       <td>{n,m}?</td><td>não</td><td>Corresponde pelo menos n vezes mas não mais que m vezes.</td>
      </tr>

      <tr>
       <td>{MACRO}</td><td>-</td><td>Inclui a MACRO de expressão regular na expressão atual.</td>
      </tr>

     </tbody>
    
   </table>

  </p>
 </div>
 <div id="parle.regex.anchors" class="section">
  <h2 class="title">Âncoras</h2>
  <p class="para">
   <table class="doctable table">
    <caption><strong>Anchors</strong></caption>
    
     <thead>
      <tr>
       <th>Sequência</th><th>Descrição</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>^</td><td>Início da string ou após uma nova linha.</td>
      </tr>

      <tr>
       <td>$</td><td>Fim da string ou antes de uma nova linha.</td>
      </tr>

     </tbody>
    
   </table>

  </p>
 </div>
 <div id="parle.regex.grouping" class="section">
  <h2 class="title">Agrupamento</h2>
  <p class="para">
   <table class="doctable table">
    <caption><strong>Agrupamento</strong></caption>
    
     <thead>
      <tr>
       <th>Sequência</th>
       <th>Descrição</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>(...)</td>
       <td>Agrupa uma expressão regular para substituir a precedência do operador padrão.</td>
      </tr>

      <tr>
       <td style="vertical-align: top;">(?r-s:pattern)</td>
       <td>
        <span class="simpara">
         Aplica a opção r e omite a opção s ao interpretar o padrão.
         As opções podem ser zero ou mais dos caracteres i, s ou x.
        </span>
        <span class="simpara">
         <code class="literal">i</code> significa sem diferenciação de maiúsculas/minúsculas.
        </span>
        <span class="simpara">
         <code class="literal">-i</code> significa com diferenciação de maiúsculas/minúsculas.
        </span>
        <span class="simpara">
         <code class="literal">s</code> altera o significado de <code class="literal">.</code> para corresponder a qualquer caractere.
        </span>
        <span class="simpara">
         <code class="literal">-s</code> altera o significado de <code class="literal">.</code> para corresponder a qualquer caractere exceto <code class="literal">\n</code>.
        </span>
        <span class="simpara">
         <code class="literal">x</code> ignora comentários e espaços em branco em expressões.
         Espaços em branco são ignorados, a menos que sejam precedidos por barra invertida, estejam contidos entre <code class="literal">&quot;&quot;s</code>,
         ou apareçam dentro de um intervalo de caracteres.
        </span>
        <span class="simpara">
         Essas opções podem ser aplicadas globalmente no nível de regras passando uma combinação de sinalizadores de bits para o analisador léxico.
        </span>
       </td>
      </tr>

      <tr>
       <td>(?# comment )</td>
       <td>Omite tudo dentro de (). O primeiro caractere ) encontrado encerra o padrão. Não é possível que o comentário contenha um caractere ). O comentário pode abranger várias linhas.</td>
      </tr>

     </tbody>
    
   </table>

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