1
0
mirror of https://github.com/php/doc-es.git synced 2026-03-26 08:22:08 +01:00
Files
archived-doc-es/reference/pcre/pattern.posix.xml
Pedro Antonio Gil Rodríguez 21ea7b42cb Actualización a la últma versión
git-svn-id: https://svn.php.net/repository/phpdoc/es/trunk@331949 c90b9560-bf6c-de11-be94-00142212c4b1
2013-10-24 17:12:24 +00:00

133 lines
4.7 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 4fe7ad5b9e5edb16684a3d4323a84f64236977eb Maintainer: seros Status: ready -->
<!-- Reviewed: no -->
<article xml:id="reference.pcre.pattern.posix" xmlns="http://docbook.org/ns/docbook">
<title>Diferencias con las expresiones regulares POSIX</title>
<para>
A partir de PHP 5.3.0, la extensión <link linkend="book.regex">Expresiones Regulares POSIX</link>
está obsoleta. Hay varias diferencias entre las expresiones regulares POSIX y
las expresiones regulares de PCRE. Esta página lista las más notables que son necesarias
conocer cuando se convierten a PCRE.
</para>
<para>
<orderedlist>
<listitem>
<simpara>
Las funciones de PCRE requieren que el patrón esté encerrado por <link
linkend="regexp.reference.delimiters">delimitadores</link>.
</simpara>
</listitem>
<listitem>
<simpara>
A diferencia de POSIX, la extensión PCRE no tiene funciones dedicadas para
comparación insensible a mayúsculas-minúsculas. En su lugar, esto está soportado por el uso
del <emphasis>i</emphasis> (<literal>PCRE_CASELESS</literal>)
<link linkend="reference.pcre.pattern.modifiers">modificador de patrón</link>. También están
disponibles otros modificadores de patrón para cambiar la estrategia de comparación.
</simpara>
</listitem>
<listitem>
<simpara>
Las funciones POSIX buscan la más larga de las coincidencias del extremo izquierdo, pero PCRE
se detiene en la primera coincidencia válida. Si la cadena no coincide en absoluto
no hay diferencia, pero si coincide puede tener efectos dramáticos sobre
la coincidencia resultante y la velocidad de comparación.
</simpara>
<simpara>
Para ilustrar esta diferencia considere el siguiente ejemplo de
"Mastering Regular Expressions" por Jeffrey Friedl. Usar el patrón
<literal>one(self)?(selfsufficient)?</literal> sobre la cadena
<literal>oneselfsufficient</literal> con PCRE resultará en la coincidencia de
<literal>oneself</literal>, pero usando POSIX el resultado será la cadena
completa <literal>oneselfsufficient</literal>. Ambas (sub)cadenas coinciden con la
cadena origianl, pero POSIX requiere que la más larga sea el resultado.
</simpara>
</listitem>
<listitem>
<simpara>
La definición de POSIX de una "clase carácter" difiere de la de PCRE.
Las expresiones simples entre corchetes para comparar un conjunto de caracters explícito
está soportado en la forma de
<link linkend="regexp.reference.character-classes">clases carácter</link> de PCRE,
pero los elementos de cotejamiento, las clases carácter, y las equivalencias de caracters
de POSIX no están soportadas.
</simpara>
<simpara>
Proporcionar a PCRE una expresión con una clase carácter que empiece y finalice
con los caracters <literal>:</literal>, <literal>.</literal> o <literal>=</literal>
se interpreta como un intento de usar una de las características no
soportadas, y causará un error de compilación.
</simpara>
</listitem>
</orderedlist>
</para>
<para>
<table>
<title>Sustituciones de funciones</title>
<tgroup cols="2">
<thead>
<row>
<entry>POSIX</entry>
<entry>PCRE</entry>
</row>
</thead>
<tbody>
<row>
<entry><function>ereg_replace</function></entry>
<entry><function>preg_replace</function></entry>
</row>
<row>
<entry><function>ereg</function></entry>
<entry><function>preg_match</function></entry>
</row>
<row>
<entry><function>eregi_replace</function></entry>
<entry><function>preg_replace</function></entry>
</row>
<row>
<entry><function>eregi</function></entry>
<entry><function>preg_match</function></entry>
</row>
<row>
<entry><function>split</function></entry>
<entry><function>preg_split</function></entry>
</row>
<row>
<entry><function>spliti</function></entry>
<entry><function>preg_split</function></entry>
</row>
<row>
<entry><function>sql_regcase</function></entry>
<entry><emphasis>No hay equivalente</emphasis></entry>
</row>
</tbody>
</tgroup>
</table>
</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
-->