<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/reference.pcre.pattern.syntax.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'pt_BR',
  ),
  'this' => 
  array (
    0 => 'regexp.reference.character-classes.php',
    1 => 'Classes de caracteres',
    2 => 'Classes de caracteres',
  ),
  'up' => 
  array (
    0 => 'reference.pcre.pattern.syntax.php',
    1 => 'Sintaxe das express&otilde;es regulares PCRE',
  ),
  'prev' => 
  array (
    0 => 'regexp.reference.dot.php',
    1 => 'Ponto',
  ),
  'next' => 
  array (
    0 => 'regexp.reference.alternation.php',
    1 => 'Altern&acirc;ncia',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'pt_BR',
    'path' => 'reference/pcre/pattern.syntax.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="regexp.reference.character-classes" class="section">
  <h2 class="title">Classes de caracteres</h2>
  <p class="para">
   Uma abertura de colchete introduz uma classe de caracteres,
   terminada por um fechamento de colchete. Um colchete de
   fechamento em si não é especial. Se um colchete de
   fechamento for requerido como membro da classe, ele deve ser
   o primeiro caractere na classe (após um circunflexo
   inicial, se presente) ou escapado com uma barra invertida.
  </p>
  <p class="para">
   Uma classe de caracteres corresponde a um único caractere na string;
   o caractere precisa estar no conjunto de caracteres definido pela
   classe, a menos que o primeiro caractere na classe seja um
   circunflexo, que nesse caso o caractere na string não pode estar no
   conjunto definido pela classe. Se um circunflexo for
   requerido como membro da classe, é preciso garantir que ele não seja o
   primeiro caractere, ou que seja escapado com uma barra invertida.
  </p>
  <p class="para">
   Por exemplo, a classe de caracteres [aeiou] corresponde a qualquer vogal minúscula
   sem acento, enquanto que [^aeiou] corresponde a qualquer caractere que não seja uma
   vogal minúscula sem acento. Observe que um circunflexo é apenas uma
   notação conveniente para especificar os caracteres que estão na
   classe enumerando aqueles que não estão. Não é uma
   afirmação: ela ainda consome um caractere da string
   de entrada, e falha se o ponteiro atual estiver no final
   da string.
  </p>
  <p class="para">
   Quando uma correspodência insensível a maiúsculas/minúsculas é definida, qualquer letra
   em uma classe representa tanto a forma maiúscula quanto a
   minúscula, então, por exemplo, uma classe [aeiou] insensível à forma corresponde tanto a &quot;A&quot;
   quanto a &quot;a&quot;, e uma classe [^aeiou] insensível à forma não corresponde a
   &quot;A&quot;, enquanto que um versão sensível à forma corresponderia.
  </p>
  <p class="para">
   Um caractere de nova linha nunca é tratado de modo especial em
   classes de caractere, independente da configuração da opção <a href="reference.pcre.pattern.modifiers.php" class="link">PCRE_DOTALL</a>
   ou da opção <a href="reference.pcre.pattern.modifiers.php" class="link">PCRE_MULTILINE</a>.
   Uma classe como [^a] sempre corresponderá a uma nova linha.
  </p>
  <p class="para">
   O caractere hífen (sinal de subtração) pode ser usado para especificar uma faixa
   de caracteres em uma classe. Por exemplo, [d-m]
   corresponde a qualquer letra entre d e m, inclusive. Se um hífen
   literal for requerido na classe, ele precisa ser escapado com uma
   barra invertida ou aparecer em uma posição onde não possa ser
   confundido com um indicador de faixa, tipicamente como o primeiro ou último
   caractere na classe.
  </p>
  <p class="para">
   Não é possível ter o caractere literal &quot;]&quot; como o
   caractere final de uma faixa. Uma expressão como [W-]46] é
   interpretada como uma classe de dois caracteres (&quot;W&quot; e &quot;-&quot;)
   seguida pela string literal &quot;46]&quot;, portanto corresponderia a &quot;W46]&quot; ou
   &quot;-46]&quot;. Entretanto, se o &quot;]&quot; for escapado com uma barra invertida ele
   será interpretado como o final da faixa. Assim, [W-\]46] é
   interpretado como uma classe única contendo uma faixa única seguida por
   dois caracteres separados. A representação octal ou hexadecimal
   de &quot;]&quot; também pode ser usada para finalizar uma faixa.
  </p>
  <p class="para">
   As faixas operam na sequência da tabela ASCII. Elas também podem ser
   usadas para caracteres especificados numericamente, por exemplo
   [\000-\037]. Se uma faixa que inclui letras for usada quando uma
   correspondência insensível a maiúsculas/minúsculas estiver definida, ela corresponderá às
   letras em ambas as formas. Por exemplo, [W-c] é equivalente a
   [][\^_`wxyzabc], correspondida de maneira insensível à forma, e se tabelas
   de caracteres para a localidade &quot;pt-BR&quot; estiverem em uso, [\xc0-\xc3] correspondem
   à letra A com acentos tanto em maiúsuculas quanto em minúsculas.
  </p>
  <p class="para">
   Os tipos de caractere \d, \D, \s, \S, \w e \W também podem
   aparecer em uma classe de caracteres e adicionar à classe os caractares
   aos quais eles correspondem. Por exemplo, [\dABCDEF] corresponde a qualquer
   dígito hexadecimal. Um circunflexo pode convenientemente ser usado
   com os tipos de caracteres maiúsculos para especificar um conjunto
   mais restrito de caracteres que a correspondência ao tipo de minúsculas.
   Por exemplo, a classe [^\W_] corresponde a qualquer letra ou dígito,
   mas não ao sublinhado &quot;_&quot;.
  </p>
  <p class="para">
   Todos os caracteres não alfanuméricos que não sejam \, -, ^ (no
   início) e o terminador ] não são especiais em classes
   de caracteres, mas não faz mal agum se forem escapados. O terminador
   de expressão é sempre especial e precisa ser escapado quando usado
   dentro de uma expressão.
  </p>
  <p class="para">
   O Perl suporta a notação POSIX para classes de caracteres. Ela usa nomes
   envolvidos por <code class="literal">[:</code> e <code class="literal">:]</code> dentro
   de colchetes. O PCRE também
   suporta esta notação. Por exemplo, <code class="literal">[01[:alpha:]%]</code>
   corresponde a &quot;0&quot;, &quot;1&quot;, qualquer caractere alfabético ou &quot;%&quot;. Os nomes de classe
   suportados são:
   <table class="doctable table">
    <caption><strong>Classes de caracteres</strong></caption>
    
     <tbody class="tbody">
      <tr><td><code class="literal">alnum</code></td><td>letras e dígitos</td></tr>

      <tr><td><code class="literal">alpha</code></td><td>letras</td></tr>

      <tr><td><code class="literal">ascii</code></td><td>caracteres com códigos 0 - 127</td></tr>

      <tr><td><code class="literal">blank</code></td><td>espaço ou tabulação somente</td></tr>

      <tr><td><code class="literal">cntrl</code></td><td>caracteres de controle</td></tr>

      <tr><td><code class="literal">digit</code></td><td>dígitos decimais (o mesmo que \d)</td></tr>

      <tr><td><code class="literal">graph</code></td><td>caracteres imprimíveis, excluindo o espaço</td></tr>

      <tr><td><code class="literal">lower</code></td><td>letras minúsculas</td></tr>

      <tr><td><code class="literal">print</code></td><td>caracteres imprimíveis, incluindo o espaço</td></tr>

      <tr><td><code class="literal">punct</code></td><td>caracteres imprimíveis, excluindo letras e dígitos</td></tr>

      <tr><td><code class="literal">space</code></td><td>espaço (não é idêntico a \s)</td></tr>

      <tr><td><code class="literal">upper</code></td><td>letras maiúsculas</td></tr>

      <tr><td><code class="literal">word</code></td><td>caracteres de &quot;palavra&quot; (o mesmo que \w)</td></tr>

      <tr><td><code class="literal">xdigit</code></td><td>dígitos hexadecimais</td></tr>

     </tbody>
    
   </table>

   Os caracteres da classe <code class="literal">space</code> são: tabulação horizontal (9), nova linha (10), tabulação vertical (11), alimentação de formulário (12), retorno de carro (13),
   e espaço (32). Observe que esta lista inclui o caractere de tabulação vertical (código
   11). Isso faz com que &quot;space&quot; seja diferente de <code class="literal">\s</code>, que não inclui a tabulação vertical (para
   compatibilidade com o Perl).
  </p>
  <p class="para">
   O nome <code class="literal">word</code> é uma extensão do Perl, e <code class="literal">blank</code> é uma extensão GNU
   do Perl 5.8. Uma outra extensão do Perl é a negação, que é indicada
   por um caractere <code class="literal">^</code> após o caractere de dois-pontos. Por exemplo,
   <code class="literal">[12[:^digit:]]</code> corresponde a &quot;1&quot;, &quot;2&quot; ou qualquer não-dígito.
  </p>
  <p class="para">
   No modo UTF-8, caracteres com valores maiores que 127 não correspondem a nenhuma
   das classes de caracteres POSIX.
   A partir da libpcre 8.10 algumas classes de caracteres são modificadas para usar
   proprieadades de caracteres Unicode, e nesse caso a restrição mencionada não
   se aplica. Refira-se ao <a href="http://www.pcre.org/pcre.txt" class="link external">&raquo;&nbsp;manual PCRE(3)</a>
   para detalhes.
  </p>
  <p class="para">
   Propriedades de caracteres Unicode podem aparecer dentro de uma classe de caracteres. Elas não
   podem ser parte de uma faixa. O caractere hífen após uma classe de caractere
   Unicode irá corresponder literalmente. Tentar finalizar uma faixa com uma propriedade
   de caractere Unicode resultará em um alerta.
  </p>
 </div><?php manual_footer($setup); ?>