<?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 cadenas de PHP con comillas simples y dobles <a href="language.types.string.php#language.types.string.syntax" class="link">tienen</a> un significado especial de 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>
      <span class="simpara">alarma, es decir, el carácter BEL (hex 07)</span>
     </dd>
    
    
     <dt><em>\cx</em></dt>
     <dd>
      <span class="simpara">&quot;control-x&quot;, donde x es cualquier carácter</span>
     </dd>
    
    
     <dt><em>\e</em></dt>
     <dd>
      <span class="simpara">escape (hex 1B)</span>
     </dd>
    
    
     <dt><em>\f</em></dt>
     <dd>
      <span class="simpara">salto de página (hex 0C)</span>
     </dd>
    
    
     <dt><em>\n</em></dt>
     <dd>
      <span class="simpara">nueva línea (hex 0A)</span>
     </dd>
    
    
     <dt><em>\p{xx}</em></dt>
     <dd>
      <span 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
      </span>
     </dd>
    
    
     <dt><em>\P{xx}</em></dt>
     <dd>
      <span 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
      </span>
     </dd>
    
    
     <dt><em>\r</em></dt>
     <dd>
      <span class="simpara">retorno de carro (hex 0D)</span>
     </dd>
    
    
     <dt><em>\R</em></dt>
     <dd>
      <span class="simpara">salto de línea: coincide con \n, \r y \r\n</span>
     </dd>
    
    
     <dt><em>\t</em></dt>
     <dd>
      <span class="simpara">tabulador (hex 09)</span>
     </dd>
    
    
     <dt><em>\xhh</em></dt>
     <dd>
      <span class="simpara">
       carácter con código hex hh
      </span>
     </dd>
    
    
     <dt><em>\ddd</em></dt>
     <dd>
      <span class="simpara">carácter con código octal ddd, o referencia inversa</span>
     </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><span class="simpara">es otra forma de escribir un espacio</span></dd>
    
    
     <dt><em>\40</em></dt>
     <dd>
      <span class="simpara">
       es lo mismo, siempre que haya menos de 40
       subpatrones de captura anteriores
      </span>
     </dd>
    
    
     <dt><em>\7</em></dt>
     <dd><span class="simpara">siempre es una referencia inversa</span></dd>
    
    
     <dt><em>\11</em></dt>
     <dd>
      <span class="simpara">
       podría ser una referencia inversa, o otra forma de
       escribir un tabulador
      </span>
     </dd>
    
    
     <dt><em>\011</em></dt>
     <dd><span class="simpara">siempre es un tabulador</span></dd>
    
    
     <dt><em>\0113</em></dt>
     <dd><span class="simpara">es un tabulador seguido del carácter &quot;3&quot;</span></dd>
    
    
     <dt><em>\113</em></dt>
     <dd>
      <span class="simpara">
       es el carácter con código octal 113 (ya que no puede haber más de 99 referencias inversas)
      </span>
     </dd>
    
    
     <dt><em>\377</em></dt>
     <dd><span class="simpara">es un byte compuesto completamente de 1 bits</span></dd>
    
    
     <dt><em>\81</em></dt>
     <dd>
      <span class="simpara">
       es una referencia inversa, o un cero binario
       seguido de los dos caracteres &quot;8&quot; y &quot;1&quot;
      </span>
     </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><span class="simpara">cualquier dígito decimal</span></dd>
    
    
     <dt><em>\D</em></dt>
     <dd><span class="simpara">cualquier carácter que no sea un dígito decimal</span></dd>
    
    
     <dt><em>\h</em></dt>
     <dd><span class="simpara">cualquier carácter de espacio en blanco horizontal</span></dd>
    
    
     <dt><em>\H</em></dt>
     <dd><span class="simpara">cualquier carácter que no sea un carácter de espacio en blanco horizontal</span></dd>
    
    
     <dt><em>\s</em></dt>
     <dd><span class="simpara">cualquier carácter de espacio en blanco</span></dd>
    
    
     <dt><em>\S</em></dt>
     <dd><span class="simpara">cualquier carácter que no sea un carácter de espacio en blanco</span></dd>
    
    
     <dt><em>\v</em></dt>
     <dd><span class="simpara">cualquier carácter de espacio en blanco vertical</span></dd>
    
    
     <dt><em>\V</em></dt>
     <dd><span class="simpara">cualquier carácter que no sea un carácter de espacio en blanco vertical</span></dd>
    
    
     <dt><em>\w</em></dt>
     <dd><span class="simpara">cualquier carácter de &quot;palabra&quot;</span></dd>
    
    
     <dt><em>\W</em></dt>
     <dd><span class="simpara">cualquier carácter &quot;no palabra&quot;</span></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><span class="simpara">límite de palabra</span></dd>
    
    
     <dt><em>\B</em></dt>
     <dd><span class="simpara">no es un límite de palabra</span></dd>
    
    
     <dt><em>\A</em></dt>
     <dd><span class="simpara">inicio del sujeto (independiente del modo multiline)</span></dd>
    
    
     <dt><em>\Z</em></dt>
     <dd>
      <span class="simpara">
       final del sujeto o salto de línea al final (independiente del
       modo multiline)
      </span>
     </dd>
    
    
     <dt><em>\z</em></dt>
     <dd><span class="simpara">final del sujeto (independiente del modo multiline)</span></dd>
    
    
     <dt><em>\G</em></dt>
     <dd><span class="simpara">primera posición de coincidencia en el sujeto</span></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); ?>