mirror of
https://github.com/php/doc-es.git
synced 2026-03-24 07:22:16 +01:00
156 lines
6.2 KiB
XML
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
|
|
-->
|