<?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.escape.php',
    1 => 'Sequ&ecirc;ncias de escape',
    2 => 'Sequ&ecirc;ncias de escape',
  ),
  'up' => 
  array (
    0 => 'reference.pcre.pattern.syntax.php',
    1 => 'Sintaxe das express&otilde;es regulares PCRE',
  ),
  'prev' => 
  array (
    0 => 'regexp.reference.meta.php',
    1 => 'Metacaracteres',
  ),
  'next' => 
  array (
    0 => 'regexp.reference.unicode.php',
    1 => 'Propriedades de caracteres Unicode',
  ),
  '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.escape" class="section">
  <h2 class="title">Sequências de escape</h2>
  <p class="para">
   A barra invertida tem vários usos. Primeiramente, se ela for
   seguida por um caractere não alfanumérico, ela remove qualquer
   significado especial que este caractere possa ter. Este uso da
   barra invertida como um caractere de escape se aplica tanto dentro
   quanto fora de classes de caracteres.
  </p>
  <p class="para">
   Por exemplo, se a intenção é casar com um caractere &quot;*&quot;, deve-se escrever
   &quot;\*&quot; na expressão. Isto é aplicável mesmo que o
   próximo caractere pudesse ser interpretado como um
   metacaractere, por isso é sempre seguro preceder um caractere não alfanumérico
   com &quot;\&quot; para especificar que ele irá representar a si mesmo. Em
   particular, se a intenção for casar com uma barra invertida, deve-se escrever &quot;\\&quot;.
  </p>
  <blockquote class="note"><p><strong class="note">Nota</strong>: 
   <p class="para">
    <a href="language.types.string.php#language.types.string.syntax" class="link">strings</a> do PHP com aspas simples e aspas duplas têm significado
    especial para a barra invertida. Assim, se \ precisa corresponder a uma expressão
    regular \\, então &quot;\\\\&quot; ou &#039;\\\\&#039; precisam ser usadas no código PHP.
   </p>
  </p></blockquote>
  <p class="para">
   Se uma expressão for compilada com a opção
   <a href="reference.pcre.pattern.modifiers.php" class="link">PCRE_EXTENDED</a>,
   espaços em branco na expressão (que não estejam em uma classe de caracteres) e
   caracteres entre um &quot;#&quot; fora de uma classe de caracteres e o próximo caractere de
   nova linha são ignorados. Uma barra invertida de escape pode ser usada para incluir um
   espaço ou um caractere &quot;#&quot; como parte da expressão.
  </p>
  <p class="para">
   Um segundo uso da barra invertida fornece um meio de codificar
   caracteres não imprimíveis de uma maneira visível. Não há
   restrição para presença de caracteres não imprimíveis,
   exceto pelo zero binário que termina uma expressão,
   mas quando uma expressão está sendo preparada durante a edição de texto, normalmente
   é mais fácil usar uma das sequências de escape a seguir do que
   usar o caractere binário que ela representa:
  </p>
  <p class="para">
   <dl>
    
     <dt><em>\a</em></dt>
     <dd>
      <span class="simpara">sinal sonoro, isto é, o caracater BEL (hexa 07)</span>
     </dd>
    
    
     <dt><em>\cx</em></dt>
     <dd>
      <span class="simpara">&quot;Crtl-x&quot;, onde x é qualquer caractere</span>
     </dd>
    
    
     <dt><em>\e</em></dt>
     <dd>
      <span class="simpara">escape (hexa 1B)</span>
     </dd>
    
    
     <dt><em>\f</em></dt>
     <dd>
      <span class="simpara">alimentação de formulário (hexa 0C)</span>
     </dd>
    
    
     <dt><em>\n</em></dt>
     <dd>
      <span class="simpara">nova linha (hexa 0A)</span>
     </dd>
    
    
     <dt><em>\p{xx}</em></dt>
     <dd>
      <span class="simpara">
       um caractere com a propriedade xx, veja
       <a href="regexp.reference.unicode.php" class="link">propriedades Unicode</a>
       para mais informação
      </span>
     </dd>
    
    
     <dt><em>\P{xx}</em></dt>
     <dd>
      <span class="simpara">
       um caractere sem a propriedade xx, veja
       <a href="regexp.reference.unicode.php" class="link">propriedades Unicode</a>
       para mais informação
      </span>
     </dd>
    
    
     <dt><em>\r</em></dt>
     <dd>
      <span class="simpara">retorno de carro (hexa 0D)</span>
     </dd>
    
    
     <dt><em>\R</em></dt>
     <dd>
      <span class="simpara">quebra de linha: corresponde a \n, \r e \r\n</span>
     </dd>
    
    
     <dt><em>\t</em></dt>
     <dd>
      <span class="simpara">tabulação (hexa 09)</span>
     </dd>
    
    
     <dt><em>\xhh</em></dt>
     <dd>
      <span class="simpara">
       caractere com o código hexadecimal hh
      </span>
     </dd>
    
    
     <dt><em>\ddd</em></dt>
     <dd>
      <span class="simpara">caractere com o código octal ddd, ou referência retroativa</span>
     </dd>
    
   </dl>
  </p>
  <p class="para">
   O efeito preciso de &quot;<code class="literal">\cx</code>&quot; é o seguinte:
   se &quot;<code class="literal">x</code>&quot; for uma letra minúscula, ela é convertida
   para maiúscula. Depois, o bit 6 do caractere (hexa 40) é invertido.
   Portanto, &quot;<code class="literal">\cz</code>&quot; se torna hexa 1A, mas
   &quot;<code class="literal">\c{</code>&quot; se torna hexa 3B, enquanto que &quot;<code class="literal">\c;</code>&quot;
   se torna hexa 7B.
  </p>
  <p class="para">
   Depois de &quot;<code class="literal">\x</code>&quot;, até dois dígitos hexadecimais são
   lidos (letras podem ser minúsculas ou maiúsculas).
   No <em>modo UTF-8</em>, &quot;<code class="literal">\x{...}</code>&quot; é
   permitido, onde o conteúdo entre chaves é uma string de dígitos
   hexadecimais. É interpretado como um caractere UTF-8 cujo número de código é
   o número hexadecimal informado. A sequência de escape hexadecimal original,
   <code class="literal">\xhh</code>, corresponde a um caractere UTF-8 de dois bytes se o valor
   for maior que 127.
  </p>
  <p class="para">
   Depois de &quot;<code class="literal">\0</code>&quot; até dois dígitos octais adicionais são lidos.
   Em ambos os casos, se eles forem menos que dois, apenas os presentes
   são usados. Assim, a sequência &quot;<code class="literal">\0\x\07</code>&quot;
   especifica dois zeros binários seguidos por um caractere BEL. Certifique-se de
   fornecer dois dígitos depois do zero inicial se o caractere
   seguinte for, por acaso, um dígito octal.
  </p>
  <p class="para">
   A interpretação de uma barra invertida seguida por um dígito que não seja 0
   é complicada. Fora de uma classe de caracteres, o PCRE lê este dígito
   e os seguintes como um número decimal. Se o número
   for menor que 10, ou se houve pelo menos esta quantidade
   de grupos em parênteses na expressão, a
   sequência inteira é interpretada como uma <em>referência retroativa</em>. Uma descrição
   de como isto funciona é fornecida mais abaixo, logo após a discussão
   sobre sub-expressões entre parênteses.
  </p>
  <p class="para">
   Dentro de uma classe de caracteres, ou se o número decimal for
   maior que 9 e não houve essa quantidade de sub-expressões
   de captura, o PCRE lê novamente até três dígitos octais depois da
   barra invertida, e gera um único byte a partir dos
   8 bits menos significativos do valor. Quaisquer dígitos subsequentes
   representam a si mesmos. Por exemplo:
  </p>
  <p class="para">
   <dl>
    
     <dt><em>\040</em></dt>
     <dd><span class="simpara">é uma outra forma de escrever um espaço em branco (decimal 32)</span></dd>
    
    
     <dt><em>\40</em></dt>
     <dd>
      <span class="simpara">
       é a mesma coisa, desde que haja menos que 40
       sub-expressões de captura
      </span>
     </dd>
    
    
     <dt><em>\7</em></dt>
     <dd><span class="simpara">é sempre uma referência retroativa</span></dd>
    
    
     <dt><em>\11</em></dt>
     <dd>
      <span class="simpara">
       pode ser uma referência retroativa, ou outra forma de
       escrever uma tabulação (decimal 9)
      </span>
     </dd>
    
    
     <dt><em>\011</em></dt>
     <dd><span class="simpara">é sempre uma tabulação (decimal 9)</span></dd>
    
    
     <dt><em>\0113</em></dt>
     <dd><span class="simpara">é uma tabulação seguida pelo caractere &quot;3&quot;</span></dd>
    
    
     <dt><em>\113</em></dt>
     <dd>
      <span class="simpara">
       é o caractere com o código octal 113 (decimal 75), já que
       não pode haver mais que 99 referências retroativas
      </span>
     </dd>
    
    
     <dt><em>\377</em></dt>
     <dd><span class="simpara">é um byte que consiste inteiramente de bits com o valor 1 (decimal 255)</span></dd>
    
    
     <dt><em>\81</em></dt>
     <dd>
      <span class="simpara">
       pode ser uma referência retroativa, ou um zero binário
       seguido pelos caracteres &quot;8&quot; e &quot;1&quot;
      </span>
     </dd>
    
   </dl>
  </p>
  <p class="para">
   Observe que valores octais de 100 ou maiores não podem ser
   introduzidos com um zero na frente, porque não mais que três
   dígitos octais são lidos no total.
  </p>
  <p class="para">
   Todas as sequências que definem um valor de byte único podem ser
   usadas tanto dentro quanto fora de classes de caracteres. Além disso,
   dentro de uma classe de caracteres, a sequência &quot;<code class="literal">\b</code>&quot;
   é interpretada como o caractere &quot;backspace&quot; (hexa 08). Fora de uma classe de
   caracteres ela tem um significado diferente (veja abaixo).
  </p>
  <p class="para">
   O terceiro uso da barra invertida é para especificar tipos
   genéricos de caracteres:
  </p>
  <p class="para">
   <dl>
    
     <dt><em>\d</em></dt>
     <dd><span class="simpara">qualquer dígito decimal</span></dd>
    
    
     <dt><em>\D</em></dt>
     <dd><span class="simpara">qualquer caractere que não seja um dígito decimal</span></dd>
    
    
     <dt><em>\h</em></dt>
     <dd><span class="simpara">qualquer caractere de espaço em branco horizontal</span></dd>
    
    
     <dt><em>\H</em></dt>
     <dd><span class="simpara">qualquer caractere que não seja um espaço em branco horizontal</span></dd>
    
    
     <dt><em>\s</em></dt>
     <dd><span class="simpara">qualquer caractere que represente um espaço em branco</span></dd>
    
    
     <dt><em>\S</em></dt>
     <dd><span class="simpara">qualquer caractere que não represente um espaço em branco</span></dd>
    
    
     <dt><em>\v</em></dt>
     <dd><span class="simpara">qualquer caractere de espaço em branco vertical</span></dd>
    
    
     <dt><em>\V</em></dt>
     <dd><span class="simpara">qualquer caractere que não seja um espaço em branco vertical</span></dd>
    
    
     <dt><em>\w</em></dt>
     <dd><span class="simpara">qualquer caractere de uma &quot;palavra&quot;</span></dd>
    
    
     <dt><em>\W</em></dt>
     <dd><span class="simpara">qualquer caractere que não seja de uma &quot;palavra&quot;</span></dd>
    
   </dl>
  </p>
  <p class="para">
   Cada par de sequência de escape particiona o conjunto completo de
   caracteres em dois conjuntos desconexos. Cada caractere informado
   corresponde a um, e apenas um, de cada par.
  </p>
  <p class="para">
   Os caracteres que representam um espaço em branco horizontal são tabulação horizontal (9), nova linha (10), alimentação de formulário (12), retorno de carro (13),
   e espaço (32). No entanto, em casos de correspondências específicas de localidade,
   caracteres com pontos de código na faixa de 128 a 255 podem também ser considerados
   como caracteres de espaço em branco, por exemplo, NBSP (A0).
  </p>
  <p class="para">
   Uma caractere de uma &quot;palavra&quot; é qualquer letra ou dígito ou o caractere
   de sublinhado &quot;_&quot;, isto é, qualquer caractere que possa fazer parte de uma
   &quot;<em>palavra</em>&quot; em Perl. A definição de letras e dígitos é
   controlada pelas tabelas de caracteres do PCRE, e pode varia se correspondências específicas
   de localidade estiverem ocorrendo. Por exemplo, na localidade &quot;pt-BR&quot; (português do Brasil), alguns
   códigos de caracteres maiores que 127 são usados para letras acentuadas,
   e estes são correspondidos por <code class="literal">\w</code>.
  </p>
  <p class="para">
   Estas sequências de tipo de caracteres podem aparecer tanto dentro como
   fora de classes de caracteres. Cada uma corresponde a um caracteres do
   tipo apropriado. Se o ponto de correspondência atual estiver no
   final da string de entrada, todos eles irão falhar, já que não
   haverá caractere para correspondência.
  </p>
  <p class="para">
   O quarto uso da barra invertida é para certas afirmações
   simples. Uma afirmação especifica uma condição que deve ser encontrada
   em um ponto particular de uma correspondência, sem consumir nenhum
   caractere da string de entrada. O uso de sub-expressões
   para afirmações mais complicadas é descrito abaixo. As
   afirmaçõs que usam barra invertida são:
  </p>
  <p class="para">
   <dl>
    
     <dt><em>\b</em></dt>
     <dd><span class="simpara">borda de palavra</span></dd>
    
    
     <dt><em>\B</em></dt>
     <dd><span class="simpara">não é borda de palavra</span></dd>
    
    
     <dt><em>\A</em></dt>
     <dd><span class="simpara">início da string de entrada (independente do modo multi-linhas)</span></dd>
    
    
     <dt><em>\Z</em></dt>
     <dd>
      <span class="simpara">
       final da string de entrada ou caractere de nova linha no final (independente do
       modo multi-linhas)
      </span>
     </dd>
    
    
     <dt><em>\z</em></dt>
     <dd><span class="simpara">final da string de entrada (independente do modo multi-linhas)</span></dd>
    
    
     <dt><em>\G</em></dt>
     <dd><span class="simpara">primeira posição de correspondência na string de entrada</span></dd>
    
   </dl>
  </p>
  <p class="para">
   Estas afirmações podem não aparecer em classes de caracteres (mas
   observe que &quot;<code class="literal">\b</code>&quot; tem um significado diferente, que é o caractere
   de &quot;backspace&quot; dentro de uma classe de caracteres).
  </p>
  <p class="para">
   Uma borda de palavra é uma posição na string de entrada onde
   nem o caractere atual nem o caractere anterior
   correspondem a <code class="literal">\w</code> ou <code class="literal">\W</code> ao mesmo tempo (isto é, um deles corresponde a
   <code class="literal">\w</code> e o outro corresponde a
   <code class="literal">\W</code>), ou o início ou final da string se o primeiro
   ou último caractere corresponder a <code class="literal">\w</code>, respectivamente.
  </p>
  <p class="para">
   As afirmações <code class="literal">\A</code>, <code class="literal">\Z</code> e
   <code class="literal">\z</code> diferem dos tradicionais
   circunflexo &quot;^&quot; e cifrão &quot;$&quot; (descritos em <a href="regexp.reference.anchors.php" class="link">âncoras</a> )
   porque elas somente são correspondidas exatamente no início e no final da string de entrada,
   não importa que opções estão definidas. Elas não são afetada pelas opções
   <a href="reference.pcre.pattern.modifiers.php" class="link">PCRE_MULTILINE</a> ou
   <a href="reference.pcre.pattern.modifiers.php" class="link">PCRE_DOLLAR_ENDONLY</a>.
   A diferença entre <code class="literal">\Z</code> e
   <code class="literal">\z</code> é que <code class="literal">\Z</code> corresponde antes de um caractere de
   nova linha que é o último caractere da string e também no final da
   string, enquanto que <code class="literal">\z</code> corresponde apenas no final.
  </p>
  <p class="para">
   A afirmação <code class="literal">\G</code> é verdadeira somente quando a posição
   de correspondência atual é no ponto inicial da corresponência, como especificado pelo
   argumento <code class="parameter">offset</code> da função
   <span class="function"><a href="function.preg-match.php" class="function">preg_match()</a></span>. Ela difere de <code class="literal">\A</code>
   quando o valor de <code class="parameter">offset</code> é não-zero.
  </p>

  <p class="para">
   <code class="literal">\Q</code> e <code class="literal">\E</code> podem ser usadas para ignorar
   metacaracteres na expressão. Por exemplo:
   <code class="literal">\w+\Q.$.\E$</code> irão corresponder a um ou mais caracteres de palavras,
   seguidos pelos literais <code class="literal">.$.</code> e ancorados no final da
   string. Observe que isto não muda o comportamento dos
   delimitadores; por exemplo, a expressão <code class="literal">#\Q#\E#$</code>
   não é válida, porque o segundo <code class="literal">#</code> marca o final
   da expressão, e o <code class="literal">\E#</code> é interpretado como modificador
   inválido.
  </p>

  <p class="para">
   <code class="literal">\K</code> pode ser usado para redefinir o início da correspondência.
   Por exemplo, a expressão <code class="literal">foo\Kbar</code> corresponde a
   &quot;foobar&quot;, mas reporta que correspondeu a &quot;bar&quot;. O uso de
   <code class="literal">\K</code> não interfere com a configuração de substrings
   capturadas. Por exemplo, quando a expressão <code class="literal">(foo)\Kbar</code>
   corresponde a &quot;foobar&quot;, a primeira substring ainda será definida como &quot;foo&quot;.
  </p>

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