1
0
mirror of https://github.com/php/doc-es.git synced 2026-04-26 08:38:05 +02:00
Files
2025-05-03 21:11:42 +02:00

413 lines
13 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 23ea6be076881a34e1d454e9680968ece085f7f6 Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: no -->
<chapter xml:id="parle.pattern.matching" xmlns="http://docbook.org/ns/docbook">
<title>Correspondencia de patrón Parle</title>
<titleabbrev>Correspondencia de patrón</titleabbrev>
<para>
Parle soporta la correspondencia de patrón con expresiones regulares similares a flex.
Los siguientes conjuntos de caracteres POSIX también son soportados:
<simplelist type="inline">
<member><literal>[:alnum:]</literal></member>
<member><literal>[:alpha:]</literal></member>
<member><literal>[:blank:]</literal></member>
<member><literal>[:cntrl:]</literal></member>
<member><literal>[:digit:]</literal></member>
<member><literal>[:graph:]</literal></member>
<member><literal>[:lower:]</literal></member>
<member><literal>[:print:]</literal></member>
<member><literal>[:punct:]</literal></member>
<member><literal>[:space:]</literal></member>
<member><literal>[:upper:]</literal></member>
<member><literal>[:xdigit:]</literal></member>
</simplelist>.
</para>
<para>
Las clases de caracteres Unicode no están actualmente activadas por omisión, pase --enable-parle-utf32 para hacerlas disponibles.
Una codificación particular puede ser mapeada con una regex correctamente construida.
Por ejemplo, para corresponder al símbolo EURO codificado en UTF-8, la expresión regular <literal>[\xe2][\x82][\xac]</literal> puede ser utilizada.
El patrón para una cadena codificada en UTF-8 podría ser <literal>[ -\x7f]{+}[\x80-\xbf]{+}[\xc2-\xdf]{+}[\xe0-\xef]{+}[\xf0-\xff]+</literal>.
</para>
<section xml:id="parle.regex.chars" annotations="chunk:false">
<title>Representación de caracteres</title>
<para>
<table>
<title>Representación de caracteres</title>
<tgroup cols="2">
<thead>
<row>
<entry>Secuencia</entry><entry>Descripción</entry>
</row>
</thead>
<tbody>
<row>
<entry>\a</entry><entry>Alerta (campana).</entry>
</row>
<row>
<entry>\b</entry><entry>Retroceso (Backspace).</entry>
</row>
<row>
<entry>\e</entry><entry>Carácter ESC, \x1b.</entry>
</row>
<row>
<entry>\n</entry><entry>Nueva línea.</entry>
</row>
<row>
<entry>\r</entry><entry>Retorno de carro.</entry>
</row>
<row>
<entry>\f</entry><entry>Salto de página, \x0c.</entry>
</row>
<row>
<entry>\t</entry><entry>Tabulación horizontal, \x09.</entry>
</row>
<row>
<entry>\v</entry><entry>Tabulación vertical, \x0b.</entry>
</row>
<row>
<entry>\oct</entry><entry>Carácter especificado por un código octal de tres dígitos.</entry>
</row>
<row>
<entry>\xhex</entry><entry>Carácter especificado por un código hexadecimal.</entry>
</row>
<row>
<entry>\cchar</entry><entry>Carácter de control nombrado.</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
</section>
<section xml:id="parle.regex.charclass" annotations="chunk:false">
<title>Clases de caracteres</title>
<para>
<table>
<title>Clases de caracteres</title>
<tgroup cols="2">
<thead>
<row>
<entry>Secuencia</entry><entry>Descripción</entry>
</row>
</thead>
<tbody>
<row>
<entry>[...]</entry><entry>Un solo carácter listado o contenido en un rango listado. Los rangos pueden ser combinados con los operadores <literal>{+}</literal> y <literal>{-}</literal>. Por ejemplo <literal>[a-z]{+}[0-9]</literal> es lo mismo que <literal>[0-9a-z]</literal> y <literal>[a-z]{-}[aeiou]</literal> es lo mismo que <literal>[b-df-hj-np-tv-z]</literal>.</entry>
</row>
<row>
<entry>[^...]</entry><entry>Un solo carácter no listado y no contenido en un rango listado.</entry>
</row>
<row>
<entry>.</entry><entry>Cualquier carácter, por omisión <literal>[^\n].</literal></entry>
</row>
<row>
<entry>\d</entry><entry>Carácter numérico, <literal>[0-9]</literal>.</entry>
</row>
<row>
<entry>\D</entry><entry>Carácter no numérico, <literal>[^0-9]</literal>.</entry>
</row>
<row>
<entry>\s</entry><entry>Carácter de espacio en blanco, <literal>[ \t\n\r\f\v]</literal>.</entry>
</row>
<row>
<entry>\S</entry><entry>Carácter no de espacio en blanco, <literal>[^ \t\n\r\f\v]</literal>.</entry>
</row>
<row>
<entry>\w</entry><entry>Carácter de palabra, <literal>[a-zA-Z0-9_]</literal>.</entry>
</row>
<row>
<entry>\W</entry><entry>Carácter de no palabra, <literal>[^a-zA-Z0-9_]</literal>.</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
</section>
<section xml:id="parle.regex.unicodecharclass" annotations="chunk:false">
<title>Clases de caracteres Unicode</title>
<para>
<table>
<title>Clases de caracteres Unicode</title>
<tgroup cols="2">
<thead>
<row>
<entry>Secuencia</entry><entry>Descripción</entry>
</row>
</thead>
<tbody>
<row>
<entry>\p{C}</entry><entry>Otro.</entry>
</row>
<row>
<entry>\p{Cc}</entry><entry>Otro, control.</entry>
</row>
<row>
<entry>\p{Cf}</entry><entry>Otro, formato.</entry>
</row>
<row>
<entry>\p{Co}</entry><entry>Otro, uso privado.</entry>
</row>
<row>
<entry>\p{Cs}</entry><entry>Otro, sustituto.</entry>
</row>
<row>
<entry>\p{L}</entry><entry>Letra.</entry>
</row>
<row>
<entry>\p{LC}</entry><entry>Letra, con casos.</entry>
</row>
<row>
<entry>\p{Ll}</entry><entry>Letra, minúscula.</entry>
</row>
<row>
<entry>\p{Lm}</entry><entry>Letra, modificada.</entry>
</row>
<row>
<entry>\p{Lo}</entry><entry>Letra, otra.</entry>
</row>
<row>
<entry>\p{Lt}</entry><entry>Letra, de título.</entry>
</row>
<row>
<entry>\p{Lu}</entry><entry>Letra, mayúscula.</entry>
</row>
<row>
<entry>\p{M}</entry><entry>Marca.</entry>
</row>
<row>
<entry>\p{Mc}</entry><entry>Marca, espacio combinado.</entry>
</row>
<row>
<entry>\p{Me}</entry><entry>Marca, encuadre.</entry>
</row>
<row>
<entry>\p{Mn}</entry><entry>Marca, no espaciada.</entry>
</row>
<row>
<entry>\p{N}</entry><entry>Número.</entry>
</row>
<row>
<entry>\p{Nd}</entry><entry>Número, dígito decimal.</entry>
</row>
<row>
<entry>\p{Nl}</entry><entry>Número, letra.</entry>
</row>
<row>
<entry>\p{No}</entry><entry>Número, otro.</entry>
</row>
<row>
<entry>\p{P}</entry><entry>Puntuación.</entry>
</row>
<row>
<entry>\p{Pc}</entry><entry>Puntuación, conector.</entry>
</row>
<row>
<entry>\p{Pd}</entry><entry>Puntuación, guion.</entry>
</row>
<row>
<entry>\p{Pe}</entry><entry>Puntuación, cierre.</entry>
</row>
<row>
<entry>\p{Pf}</entry><entry>Puntuación, comilla final.</entry>
</row>
<row>
<entry>\p{Pi}</entry><entry>Puntuación, comilla inicial.</entry>
</row>
<row>
<entry>\p{Po}</entry><entry>Puntuación, otra.</entry>
</row>
<row>
<entry>\p{Ps}</entry><entry>Puntuación, apertura.</entry>
</row>
<row>
<entry>\p{S}</entry><entry>Símbolo.</entry>
</row>
<row>
<entry>\p{Sc}</entry><entry>Símbolo, moneda.</entry>
</row>
<row>
<entry>\p{Sk}</entry><entry>Símbolo, modificado.</entry>
</row>
<row>
<entry>\p{Sm}</entry><entry>Símbolo, matemático.</entry>
</row>
<row>
<entry>\p{So}</entry><entry>Símbolo, otro.</entry>
</row>
<row>
<entry>\p{Z}</entry><entry>Separador.</entry>
</row>
<row>
<entry>\p{Zl}</entry><entry>Separador, línea.</entry>
</row>
<row>
<entry>\p{Zp}</entry><entry>Separador, párrafo.</entry>
</row>
<row>
<entry>\p{Zs}</entry><entry>Separador, espacio.</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
<para>
Estas clases de caracteres solo están disponibles si la opción --enable-parle-utf32 ha sido pasada durante la compilación.
</para>
</section>
<section xml:id="parle.regex.alternation" annotations="chunk:false">
<title>Alternancia y repetición</title>
<para>
<table>
<title>Alternancia y repetición</title>
<tgroup cols="3">
<thead>
<row>
<entry>Secuencia</entry><entry>Greedy</entry><entry>Descripción</entry>
</row>
</thead>
<tbody>
<row>
<entry>...|...</entry><entry>-</entry><entry>Probar los subpatrones en alternancia.</entry>
</row>
<row>
<entry>*</entry><entry>yes</entry><entry>Corresponde 0 o más veces.</entry>
</row>
<row>
<entry>+</entry><entry>yes</entry><entry>Corresponde 1 o más veces.</entry>
</row>
<row>
<entry>?</entry><entry>yes</entry><entry>Corresponde 0 o 1 vez.</entry>
</row>
<row>
<entry>{n}</entry><entry>no</entry><entry>Corresponde exactamente n veces.</entry>
</row>
<row>
<entry>{n,}</entry><entry>no</entry><entry>Corresponde al menos n veces.</entry>
</row>
<row>
<entry>{n,m}</entry><entry>yes</entry><entry>Corresponde al menos n veces pero no más de m veces.</entry>
</row>
<row>
<entry>*?</entry><entry>no</entry><entry>Corresponde 0 o más veces.</entry>
</row>
<row>
<entry>+?</entry><entry>no</entry><entry>Corresponde 1 o más veces.</entry>
</row>
<row>
<entry>??</entry><entry>no</entry><entry>Corresponde 0 o 1 vez.</entry>
</row>
<row>
<entry>{n,}?</entry><entry>no</entry><entry>Corresponde al menos n veces.</entry>
</row>
<row>
<entry>{n,m}?</entry><entry>no</entry><entry>Corresponde al menos n veces pero no más de m veces.</entry>
</row>
<row>
<entry>{MACRO}</entry><entry>-</entry><entry>Incluye la regex MACRO en la regex actual.</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
</section>
<section xml:id="parle.regex.anchors" annotations="chunk:false">
<title>Ancla</title>
<para>
<table>
<title>Ancla</title>
<tgroup cols="2">
<thead>
<row>
<entry>Secuencia</entry><entry>Descripción</entry>
</row>
</thead>
<tbody>
<row>
<entry>^</entry><entry>Comienza por una cadena o después de un retorno de línea.</entry>
</row>
<row>
<entry>$</entry><entry>Termina por una cadena o antes de un retorno de línea.</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
</section>
<section xml:id="parle.regex.grouping" annotations="chunk:false">
<title>Agrupamiento</title>
<para>
<table>
<title>Agrupamiento</title>
<tgroup cols="2">
<thead>
<row>
<entry>Secuencia</entry>
<entry>Descripción</entry>
</row>
</thead>
<tbody>
<row>
<entry>(...)</entry>
<entry>Agrupa una expresión regular para modificar el orden de evaluación.</entry>
</row>
<row>
<entry valign="top">(?r-s:pattern)</entry>
<entry>
<simpara>
Aplica la opción r y omite la opción s al interpretar el patrón.
Las opciones pueden ser cero o más de los caracteres i, s o x.
</simpara>
<simpara>
<literal>i</literal> significa insensible a mayúsculas y minúsculas.
</simpara>
<simpara>
<literal>-i</literal> significa sensible a mayúsculas y minúsculas.
</simpara>
<simpara>
<literal>s</literal> modifica el significado de <literal>.</literal> para que corresponda a cualquier carácter.
</simpara>
<simpara>
<literal>-s</literal> modifica el significado de <literal>.</literal> para que corresponda a cualquier carácter excepto <literal>\n</literal>.
</simpara>
<simpara>
<literal>x</literal> ignora los comentarios y los espacios en los patrones.
Los espacios son ignorados excepto si están escapados por una barra invertida, contenidos en <literal>""s</literal>,
o aparecen dentro de un rango de caracteres.
</simpara>
<simpara>
Estas opciones pueden ser aplicadas globalmente al nivel de las reglas pasando una combinación de los indicadores de bits al analizador léxico.
</simpara>
</entry>
</row>
<row>
<entry>(?# comment )</entry>
<entry>Omite todo lo que está en (). El primer carácter ) encontrado termina el patrón. No es posible para el comentario contener un carácter ). El comentario puede extenderse sobre varias líneas.</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
</section>
</chapter>
<!-- 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
-->