mirror of
https://github.com/php/doc-es.git
synced 2026-03-26 08:22:08 +01:00
git-svn-id: https://svn.php.net/repository/phpdoc/es/trunk@331949 c90b9560-bf6c-de11-be94-00142212c4b1
133 lines
4.7 KiB
XML
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
|
|
-->
|