1
0
mirror of https://github.com/php/doc-es.git synced 2026-03-24 07:22:16 +01:00
Files
archived-doc-es/reference/pcre/pattern.differences.xml
Marcos Porto Mariño 668fe72be5 Fix white-space (#312)
2025-11-13 00:12:48 +01:00

156 lines
6.2 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 96c9d88bad9a7d7d44bfb7f26c226df7ee9ddf26 Maintainer: seros Status: ready -->
<!-- Reviewed: no Maintainer: andresdzphp -->
<!-- splitted from ./en/functions/pcre.xml, last change in rev 1.2 -->
<article xml:id="reference.pcre.pattern.differences" xmlns="http://docbook.org/ns/docbook">
<title>Diferencias con Perl</title>
<titleabbrev>Diferencias con Perl</titleabbrev>
<para>
Las diferencias descritas aquí se refieren a las que hay con Perl 5.005.
<orderedlist>
<listitem>
<simpara>
Por defecto, un carácter espacio en blanco es cualquier carácter que
la función isspace() de la biblioteca C reconoce, aunque es
posible compilar PCRE con tablas de tipo de caracteres alternativas.
Normalmente isspace() coincide con un espacio, salto de página, nueva línea,
retorno de carro, tabulador horizontal y tabulador vertical. Perl 5 ya
no incluye el tabulador vertical en su juego caracteres de espacios en blanco.
De hecho, el carácter de escape \v, el cual estuvo en la documentación de Perl
durante mucho tiempo, nunca fue reconocido. Sin embargo, el carácter
mismo fue tratado como espacio en blanco al menos hasta 5.002.
En 5.004 y 5.005 no coincide con \s.
</simpara>
</listitem>
<listitem>
<simpara>
PCRE no permite los cuantificadores de repetición en declaraciones
de búsqueda hacia delante. Perl las permite, pero no significan lo que
se puede estar pensando. Por ejemplo, (?!a){3} no afirma que los
tres caracteres siguientes no son "a". Simplemente afirma que el
siguiente carácter no es "a" tres veces.
</simpara>
</listitem>
<listitem>
<simpara>
Los sub-patrones de captura que tienen lugar dentro de declaraciones
de búsqueda hacia delante negativas se cuentan, pero sus entradas en los
índices del vector nunca se establecen. Perl establece sus variables
numéricas desde cualquiera de los patrones que han coincidido antes de que
la declaración falle al coincidir con algo (de ese modo teniendo éxito), pero
sólo si la declaración de búsqueda hacia delante negativa contiene sólo una rama.
</simpara>
</listitem>
<listitem>
<simpara>
Aunque los caracteres cero binario están soportados en la cadena objetivo,
no están permitidos en un patrón de cadena porque es pasado como una
cadena C normal, finalizada por cero. La secuencia de escape "\x00" se puede
usar para representar un cero binario en un patrón.
</simpara>
</listitem>
<listitem>
<simpara>
Las siguientes secuencias de escape de Perl no estás soportadas:
\l, \u, \L, \U. De hecho, éstas están implementadas por
el manejo de cadenas general de Perl y no son parte de su motor de
comparación de patrones.
</simpara>
</listitem>
<listitem>
<simpara>
La declaración \G de Perl no está soportada y no es
relevante para las comparaciones de patrones individuales.
</simpara>
</listitem>
<listitem>
<simpara>
Obviamente, PCRE no soporta la construcción de (?{código}) y
(??{código}). Sin embargo, tiene soporte para patrones recursivos.
</simpara>
</listitem>
<listitem>
<simpara>
Hay, a la hora de escribir, algunas singularidades en Perl
5.005_02 concernientes con la configuración de las cadenas capturadas
cuando una parte de un patrón se repite. Por ejemplo, al comparar
"aba" con el patrón /^(a(b)?)+$/ establece $2 con el valor
"b", pero al comparar "aabbaa" con /^(aa(bb)?)+$/ deja $2
sin establecer. Sin embargo, si el patrón se cambia a
/^(aa(b(b))?)+$/ entonces $2 (y $3) se establecen.
En Perl 5.004 $2 es establecido en ambos casos, y esto también es &true;
en PCRE. Si en el futuro Perl cambia a un estado de consistencia que es
diferente, PCRE puede cambiar para seguir su ejemplo.
</simpara>
</listitem>
<listitem>
<simpara>
Una discrepancia todavía no resuelta es que en Perl
5.005_02 el patrón /^(a)?(?(1)a|b)+$/ coincide con la cadena
"a", mientras que en PCRE no lo hace. Sin embargo, en Perl y en
PCRE /^(a)?a/ coincide con "a" dejando $1 sin establecer.
</simpara>
</listitem>
<listitem>
<para>
PCRE proporciona algunas extensiones para las herramientas de expresiones
regulares de Perl:
<orderedlist>
<listitem>
<simpara>
Aunque las declaraciones de búsqueda hacia atrás deben coincidir con cadenas de
longitud fija, cada rama alternativa de una declaración de búsqueda hacia atrás
puede coincidir con una longitud de cadena diferente. Perl 5.005 requiere que
todas ellas tengan la misma longitud.
</simpara>
</listitem>
<listitem>
<simpara>
Si se aplica <link linkend="reference.pcre.pattern.modifiers">PCRE_DOLLAR_ENDONLY</link>
y no se aplica <link linkend="reference.pcre.pattern.modifiers">PCRE_MULTILINE</link>,
el meta-carácter $ coincide sólo con el final absoluto de la cadena.
</simpara>
</listitem>
<listitem>
<simpara>
Si se aplica <link linkend="reference.pcre.pattern.modifiers">PCRE_EXTRA</link>,
una barra invertida seguida de una letra sin ningún significado especial fallará.
</simpara>
</listitem>
<listitem>
<simpara>
Si se aplica <link linkend="reference.pcre.pattern.modifiers">PCRE_UNGREEDY</link>,
la codicia de los cuantificadores de repetición se invierte,
es decir, por defecto dejan de ser codiciosos, pero si son seguidos por un
signo de interrogación lo serán.
</simpara>
</listitem>
</orderedlist>
</para>
</listitem>
</orderedlist>
</para>
</article>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->