<?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 => 'es',
  ),
  'this' => 
  array (
    0 => 'regexp.reference.escape.php',
    1 => 'Secuencias de escape',
    2 => 'Secuencias de escape',
  ),
  'up' => 
  array (
    0 => 'reference.pcre.pattern.syntax.php',
    1 => 'Sintaxis de expresiones regulares PCRE',
  ),
  'prev' => 
  array (
    0 => 'regexp.reference.meta.php',
    1 => 'Metacaracteres',
  ),
  'next' => 
  array (
    0 => 'regexp.reference.unicode.php',
    1 => 'Propiedades de caracteres Unicode',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'es',
    '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">Secuencias de escape</h2>
  <p class="para">
   El carácter de barra invertida tiene varios usos. En primer lugar, si está
   seguido por un carácter no alfanumérico, elimina cualquier
   significado especial que el carácter pueda tener. Este uso de
   barra invertida como carácter de escape se aplica tanto dentro como fuera de clases de caracteres.
  </p>
  <p class="para">
   Por ejemplo, si desea coincidir con un carácter &quot;*&quot;, escribe
   &quot;\*&quot; en el patrón. Esto se aplica ya sea que el
   carácter siguiente sería interpretado de otra manera como un
   metacarácter, por lo que siempre es seguro preceder un no alfanumérico
   con &quot;\&quot; para especificar que representa a sí mismo. En
   particular, si desea coincidir con una barra invertida, escribe &quot;\\&quot;.
  </p>
  <blockquote class="note"><p><strong class="note">Nota</strong>: 
   <p class="para">
    Las <a href="language.types.string.php#language.types.string.syntax" class="link">cadenas</a> de PHP con
    comillas simples y dobles dan un significado especial a la barra invertida. Por lo tanto, si \ debe coincidir con una expresión regular \\, entonces &quot;\\\\&quot; o &#039;\\\\&#039; debe usarse en el código PHP.
   </p>
  </p></blockquote>
  <p class="para">
   Si un patrón se compila con la
   <a href="reference.pcre.pattern.modifiers.php" class="link">opción PCRE_EXTENDED</a>,
   el espacio en blanco en el patrón (excepto en una clase de caracteres) y
   los caracteres entre un &quot;#&quot; fuera de una clase de caracteres y el siguiente carácter de nueva línea
   se ignoran. Una barra invertida de escape puede usarse para incluir un
   carácter de espacio en blanco o &quot;#&quot; como parte del patrón.
  </p>
  <p class="para">
   Un segundo uso de la barra invertida proporciona una manera de codificar
   caracteres no imprimibles en patrones de manera visible. No hay restricción sobre la aparición de caracteres no imprimibles,
   aparte del cero binario que termina un patrón,
   pero cuando un patrón se está preparando mediante edición de texto, generalmente es
   más fácil usar una de las siguientes secuencias de escape
   que el carácter binario que representan:
  </p>
  <p class="para">
   <dl>
    
     <dt><em>\a</em></dt>
     <dd>
      <p class="simpara">alarma, es decir, el carácter BEL (hex 07)</p>
     </dd>
    
    
     <dt><em>\cx</em></dt>
     <dd>
      <p class="simpara">&quot;control-x&quot;, donde x es cualquier carácter</p>
     </dd>
    
    
     <dt><em>\e</em></dt>
     <dd>
      <p class="simpara">escape (hex 1B)</p>
     </dd>
    
    
     <dt><em>\f</em></dt>
     <dd>
      <p class="simpara">salto de página (hex 0C)</p>
     </dd>
    
    
     <dt><em>\n</em></dt>
     <dd>
      <p class="simpara">nueva línea (hex 0A)</p>
     </dd>
    
    
     <dt><em>\p{xx}</em></dt>
     <dd>
      <p class="simpara">
       un carácter con la propiedad xx, ver
       <a href="regexp.reference.unicode.php" class="link">propiedades unicode</a>
       para más información
      </p>
     </dd>
    
    
     <dt><em>\P{xx}</em></dt>
     <dd>
      <p class="simpara">
       un carácter sin la propiedad xx, ver
       <a href="regexp.reference.unicode.php" class="link">propiedades unicode</a>
       para más información
      </p>
     </dd>
    
    
     <dt><em>\r</em></dt>
     <dd>
      <p class="simpara">retorno de carro (hex 0D)</p>
     </dd>
    
    
     <dt><em>\R</em></dt>
     <dd>
      <p class="simpara">salto de línea: coincide con \n, \r y \r\n</p>
     </dd>
    
    
     <dt><em>\t</em></dt>
     <dd>
      <p class="simpara">tabulador (hex 09)</p>
     </dd>
    
    
     <dt><em>\xhh</em></dt>
     <dd>
      <p class="simpara">
       carácter con código hex hh
      </p>
     </dd>
    
    
     <dt><em>\ddd</em></dt>
     <dd>
      <p class="simpara">carácter con código octal ddd, o referencia inversa</p>
     </dd>
    
   </dl>
  </p>
  <p class="para">
   El efecto preciso de &quot;<code class="literal">\cx</code>&quot; es el siguiente:
   si &quot;<code class="literal">x</code>&quot; es una letra minúscula, se convierte
   a mayúscula. Luego se invierte el bit 6 del carácter (hex 40).
   Así, &quot;<code class="literal">\cz</code>&quot; se convierte en hex 1A, pero
   &quot;<code class="literal">\c{</code>&quot; se convierte en hex 3B, mientras que &quot;<code class="literal">\c;</code>&quot;
   se convierte en hex 7B.
  </p>
  <p class="para">
   Después de &quot;<code class="literal">\x</code>&quot;, se leen hasta dos dígitos hexadecimales (las letras pueden estar en mayúsculas o minúsculas).
   En <em>modo UTF-8</em>, &quot;<code class="literal">\x{...}</code>&quot; está permitido, donde el contenido de las llaves es una cadena de dígitos hexadecimales. Se interpreta como un carácter UTF-8 cuyo número de código es el número hexadecimal dado. La secuencia de escape hexadecimal original,
   <code class="literal">\xhh</code>, coincide con un carácter UTF-8 de dos bytes si el valor es mayor que 127.
  </p>
  <p class="para">
   Después de &quot;<code class="literal">\0</code>&quot; se leen hasta dos dígitos octales adicionales.
   En ambos casos, si hay menos de dos dígitos, solo se usan los que
   están presentes. Así, la secuencia &quot;<code class="literal">\0\x\07</code>&quot;
   especifica dos ceros binarios seguidos de un carácter BEL. Asegúrese de
   proporcionar dos dígitos después del cero inicial si el carácter
   que sigue es él mismo un dígito octal.
  </p>
  <p class="para">
   El manejo de una barra invertida seguida de un dígito que no sea 0
   es complicado. Fuera de una clase de caracteres, PCRE lo lee
   y cualquier dígito siguiente como un número decimal. Si el número
   es menor que 10, o si ha habido al menos esa cantidad de
   paréntesis de apertura de captura anteriores en la expresión, la
   secuencia completa se toma como una <em>referencia inversa</em>. Una descripción
   de cómo funciona esto se da más adelante, después de la discusión
   de subpatrones entre paréntesis.
  </p>
  <p class="para">
   Dentro de una clase de caracteres, o si el número decimal es
   mayor que 9 y no ha habido tantas subpatrones de captura, PCRE vuelve a leer
   hasta tres dígitos octales siguientes
   a la barra invertida, y genera un solo byte a partir de
   los 8 bits menos significativos del valor. Los dígitos posteriores se representan a sí mismos. Por ejemplo:
  </p>
  <p class="para">
   <dl>
    
     <dt><em>\040</em></dt>
     <dd><p class="simpara">es otra forma de escribir un espacio</p></dd>
    
    
     <dt><em>\40</em></dt>
     <dd>
      <p class="simpara">
       es lo mismo, siempre que haya menos de 40
       subpatrones de captura anteriores
      </p>
     </dd>
    
    
     <dt><em>\7</em></dt>
     <dd><p class="simpara">siempre es una referencia inversa</p></dd>
    
    
     <dt><em>\11</em></dt>
     <dd>
      <p class="simpara">
       podría ser una referencia inversa, o otra forma de
       escribir un tabulador
      </p>
     </dd>
    
    
     <dt><em>\011</em></dt>
     <dd><p class="simpara">siempre es un tabulador</p></dd>
    
    
     <dt><em>\0113</em></dt>
     <dd><p class="simpara">es un tabulador seguido del carácter &quot;3&quot;</p></dd>
    
    
     <dt><em>\113</em></dt>
     <dd>
      <p class="simpara">
       es el carácter con código octal 113 (ya que no puede haber más de 99 referencias inversas)
      </p>
     </dd>
    
    
     <dt><em>\377</em></dt>
     <dd><p class="simpara">es un byte compuesto completamente de 1 bits</p></dd>
    
    
     <dt><em>\81</em></dt>
     <dd>
      <p class="simpara">
       es una referencia inversa, o un cero binario
       seguido de los dos caracteres &quot;8&quot; y &quot;1&quot;
      </p>
     </dd>
    
   </dl>
  </p>
  <p class="para">
   Tenga en cuenta que los valores octales de 100 o más no deben introducirse con un cero inicial, ya que nunca se leen más de tres dígitos octales.
  </p>
  <p class="para">
   Todas las secuencias que definen un valor de un solo byte pueden usarse tanto dentro como fuera de clases de caracteres. Además,
   dentro de una clase de caracteres, la secuencia &quot;<code class="literal">\b</code>&quot;
   se interpreta como el carácter de retroceso (hex 08). Fuera de una clase de caracteres tiene un significado diferente (ver más abajo).
  </p>
  <p class="para">
   El tercer uso de la barra invertida es para especificar tipos de caracteres genéricos:
  </p>
  <p class="para">
   <dl>
    
     <dt><em>\d</em></dt>
     <dd><p class="simpara">cualquier dígito decimal</p></dd>
    
    
     <dt><em>\D</em></dt>
     <dd><p class="simpara">cualquier carácter que no sea un dígito decimal</p></dd>
    
    
     <dt><em>\h</em></dt>
     <dd><p class="simpara">cualquier carácter de espacio en blanco horizontal</p></dd>
    
    
     <dt><em>\H</em></dt>
     <dd><p class="simpara">cualquier carácter que no sea un carácter de espacio en blanco horizontal</p></dd>
    
    
     <dt><em>\s</em></dt>
     <dd><p class="simpara">cualquier carácter de espacio en blanco</p></dd>
    
    
     <dt><em>\S</em></dt>
     <dd><p class="simpara">cualquier carácter que no sea un carácter de espacio en blanco</p></dd>
    
    
     <dt><em>\v</em></dt>
     <dd><p class="simpara">cualquier carácter de espacio en blanco vertical</p></dd>
    
    
     <dt><em>\V</em></dt>
     <dd><p class="simpara">cualquier carácter que no sea un carácter de espacio en blanco vertical</p></dd>
    
    
     <dt><em>\w</em></dt>
     <dd><p class="simpara">cualquier carácter de &quot;palabra&quot;</p></dd>
    
    
     <dt><em>\W</em></dt>
     <dd><p class="simpara">cualquier carácter &quot;no palabra&quot;</p></dd>
    
   </dl>
  </p>
  <p class="para">
   Cada par de secuencias de escape divide el conjunto completo de
   caracteres en dos conjuntos disjuntos. Cualquier carácter
   dado coincide con uno, y solo uno, de cada par.
  </p>
  <p class="para">
   Los caracteres de &quot;espacio en blanco&quot; son HT (9), LF (10), FF (12), CR (13),
   y espacio (32). Sin embargo, si se está realizando una coincidencia específica de la configuración regional,
   los caracteres con puntos de código en el rango 128-255 también pueden considerarse
   como caracteres de espacio en blanco, por ejemplo, NBSP (A0).
  </p>
  <p class="para">
   Un carácter de &quot;palabra&quot; es cualquier letra o dígito o el carácter de subrayado,
   es decir, cualquier carácter que pueda ser parte de
   una &quot;<em>palabra</em>&quot; de Perl. La definición de letras y dígitos está
   controlada por las tablas de caracteres de PCRE, y puede variar si se está realizando una coincidencia específica de la configuración regional. Por ejemplo, en la configuración regional &quot;fr&quot; (francés), algunos códigos de caracteres mayores que 128 se usan para letras acentuadas,
   y estas coinciden con <code class="literal">\w</code>.
  </p>
  <p class="para">
   Estas secuencias de tipos de caracteres pueden aparecer tanto dentro como
   fuera de clases de caracteres. Cada una coincide con un carácter de
   tipo apropiado. Si el punto de coincidencia actual está al final
   de la cadena de sujeto, todas fallan, ya que no hay carácter para coincidir.
  </p>
  <p class="para">
   El cuarto uso de la barra invertida es para ciertas afirmaciones simples.
   Una afirmación especifica una condición que debe cumplirse
   en un punto particular en una coincidencia, sin consumir ningún
   carácter de la cadena de sujeto. El uso de subpatrones
   para afirmaciones más complicadas se describe a continuación. Las
   afirmaciones con barra invertida son
  </p>
  <p class="para">
   <dl>
    
     <dt><em>\b</em></dt>
     <dd><p class="simpara">límite de palabra</p></dd>
    
    
     <dt><em>\B</em></dt>
     <dd><p class="simpara">no es un límite de palabra</p></dd>
    
    
     <dt><em>\A</em></dt>
     <dd><p class="simpara">inicio del sujeto (independiente del modo multiline)</p></dd>
    
    
     <dt><em>\Z</em></dt>
     <dd>
      <p class="simpara">
       final del sujeto o salto de línea al final (independiente del
       modo multiline)
      </p>
     </dd>
    
    
     <dt><em>\z</em></dt>
     <dd><p class="simpara">final del sujeto (independiente del modo multiline)</p></dd>
    
    
     <dt><em>\G</em></dt>
     <dd><p class="simpara">primera posición de coincidencia en el sujeto</p></dd>
    
   </dl>
  </p>
  <p class="para">
   Estas afirmaciones no pueden aparecer en clases de caracteres (pero
   note que &quot;<code class="literal">\b</code>&quot; tiene un significado diferente, a saber, el carácter de retroceso, dentro de una clase de caracteres).
  </p>
  <p class="para">
   Un límite de palabra es una posición en la cadena de sujeto donde
   el carácter actual y el carácter anterior no coinciden ambos
   con <code class="literal">\w</code> o <code class="literal">\W</code> (es decir, uno coincide
   con <code class="literal">\w</code> y el otro coincide
   con <code class="literal">\W</code>), o el inicio o final de la cadena si el primer
   o último carácter coincide con <code class="literal">\w</code>, respectivamente.
  </p>
  <p class="para">
   Las afirmaciones <code class="literal">\A</code>, <code class="literal">\Z</code> y
   <code class="literal">\z</code> difieren de las afirmaciones tradicionales
   de circunflejo y dólar (descritas en <a href="regexp.reference.anchors.php" class="link">anclajes</a> )
   en que solo coinciden en el inicio y final exactos de la cadena de sujeto,
   independientemente de las opciones establecidas. No se ven afectadas por las
   opciones <a href="reference.pcre.pattern.modifiers.php" class="link">PCRE_MULTILINE</a> o
   <a href="reference.pcre.pattern.modifiers.php" class="link">PCRE_DOLLAR_ENDONLY</a>.
   La diferencia entre <code class="literal">\Z</code> y
   <code class="literal">\z</code> es que <code class="literal">\Z</code> coincide antes de un salto de línea que es el último carácter de la cadena así como al final de
   la cadena, mientras que <code class="literal">\z</code> solo coincide al final.
  </p>
  <p class="para">
   La afirmación <code class="literal">\G</code> es verdadera solo cuando la posición de coincidencia actual está en el punto de inicio de la coincidencia, como se especifica por
   el argumento <code class="parameter">offset</code> de
   <span class="function"><a href="function.preg-match.php" class="function">preg_match()</a></span>. Difiere de <code class="literal">\A</code>
   cuando el valor de <code class="parameter">offset</code> no es cero.
  </p>

  <p class="para">
   <code class="literal">\Q</code> y <code class="literal">\E</code> pueden usarse para ignorar
   metacaracteres de regexp en el patrón. Por ejemplo:
   <code class="literal">\w+\Q.$.\E$</code> coincidirá con uno o más caracteres de palabra,
   seguido de literales <code class="literal">.$.</code> y anclado al final
   de la cadena. Tenga en cuenta que esto no cambia el comportamiento de
   los delimitadores; por ejemplo, el patrón <code class="literal">#\Q#\E#$</code>
   no es válido, porque el segundo <code class="literal">#</code> marca el final del patrón, y el <code class="literal">\E#</code> se interpreta como modificadores inválidos.
  </p>

  <p class="para">
   <code class="literal">\K</code> puede usarse para restablecer el inicio de la coincidencia.
   Por ejemplo, el patrón <code class="literal">foo\Kbar</code> coincide
   con &quot;foobar&quot;, pero informa que ha coincidido con &quot;bar&quot;. El uso de
   <code class="literal">\K</code> no interfiere con la configuración de subcadenas capturadas. Por ejemplo, cuando el patrón <code class="literal">(foo)\Kbar</code>
   coincide con &quot;foobar&quot;, la primera subcadena sigue configurada en &quot;foo&quot;.
  </p>

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