.\" -*- coding: UTF-8 -*- .ie t .ds dg \(dg .el .ds dg (!) .\" From Henry Spencer's regex package (as found in the apache .\" distribution). The package carries the following copyright: .\" .\" Copyright 1992, 1993, 1994 Henry Spencer. All rights reserved. .\" %%%LICENSE_START(MISC) .\" This software is not subject to any license of the American Telephone .\" and Telegraph Company or of the Regents of the University of California. .\" .\" Permission is granted to anyone to use this software for any purpose .\" on any computer system, and to alter it and redistribute it, subject .\" to the following restrictions: .\" .\" 1. The author is not responsible for the consequences of use of this .\" software, no matter how awful, even if they arise from flaws in it. .\" .\" 2. The origin of this software must not be misrepresented, either by .\" explicit claim or by omission. Since few users ever read sources, .\" credits must appear in the documentation. .\" .\" 3. Altered versions must be plainly marked as such, and must not be .\" misrepresented as being the original software. Since few users .\" ever read sources, credits must appear in the documentation. .\" .\" 4. This notice may not be removed or altered. .\" %%%LICENSE_END .\" .\" In order to comply with `credits must appear in the documentation' .\" I added an AUTHOR paragraph below - aeb. .\" .\" In the default nroff environment there is no dagger \(dg. .\" .\" 2005-05-11 Removed discussion of `[[:<:]]' and `[[:>:]]', which .\" appear not to be in the glibc implementation of regcomp .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH REGEX 7 "13 Agosto 2020" "" "Manual del Programador de Linux" .SH NOMBRE regex \- expresiones regulares POSIX.2 .SH DESCRIPCIÓN Las expresiones regulares ("ER"s), tal y como se definen en POSIX.2, tienen dos formas: ER modernas (tal y como \fIegrep\fP; llama a estas ER "extendidas" de POSIX.2) y ER obsoletas (las que usa \fIed\fP(1); son ER "básicas" de POSIX.2). Las ER obsoletas existen como tales por mantener la compatibilidad para algunos viejos programas; y serán discutidas al final. POSIX.2 deja abiertos algunos aspectos de la sintaxis y semántica de las ER; "(dg" es una de las decisiones tomadas al respecto de estos temas que puede no ser portable con otras implementaciones de la POSIX.2. .PP Una ER (moderna) es una \*(dg o más de una\*(dg \fIrama\fP no vacía, separadas por \(aq|\(aq. Acepta cualquier cosa que se corresponda con una de las ramas. .PP Una rama es una\*(dg o más de una \fIpieza\fP, concatenadas. Acepta algo que corresponda con la primera, seguida por algo que corresponda con la segunda, etc. .PP Una pieza es un \fIátomo\fP posiblemente seguido por un solo\*(dg \(aq*\(aq, \(aq+\(aq, \(aq?\(aq, o por un \fIlímite\fP. Un átomo seguido por \(aq*\(aq ajusta con una secuencia de 0 o más átomos. Un átomo seguido por \(aq+\(aq ajusta con una secuencia de 1 o más átomos. Un átomo seguido por \(aq?\(aq ajusta con una secuencia de 0 o 1 átomo. .PP Un \fIlímite\fP es un \(aq{\(aq seguido por un entero decimal sin signo, posiblemente seguido por una \(aq,\(aq posiblemente seguida por otro entero decimal sin signo, y todo acabado por un \(aq}\(aq. Los enteros deben encontrarse entre 0 y \fBRE_DUP_MAX\fP (255\*(dg) inclusive, y si hay dos de ellos, el primero no podrá ser mayor que el segundo. Un átomo seguido por un límite conteniendo un solo entero \fIi\fP y sin coma ajusta con una secuencia de exactamente \fIi\fP átomos. Un átomo seguido por un límite conteniendo un entero \fIi\fP y una coma ajusta con una secuencia de \fIi\fP o más átomos. Un átomo seguido por un límite conteniendo dos enteros \fIi\fP y \fIj\fP ajusta con una secuencia de entre \fIi\fP y \fIj\fP átomos (ambos inclusive). .PP Un átomo es una expresión regular dentro de "\fI()\fP" (ajustándose con una aparición de la expresión regular), un conjunto vacío de "\fI()\fP" (ajustando con una cadena vacía)\*(dg, una \fIexpresión con corchetes\fP (ver abajo), \(aq.\(aq (ajustándose con un solo carácter), \(aq\(ha\(aq (ajustando con la cadena vacía al principio de una linea), \(aq$\(aq (ajustando con la cadena vacía al final de una linea), un \(aq\e\(aq seguido por uno de los caracteres "\fI\(ha.[$()|*+?{\e\fP" (ajustando con es carácter tenido como un carácter normal), un \(aq\e\(aq seguido de otro carácter\*(dg (ajustando con ese carácter tenido como un carácter ordinario, como si el \(aq\e\(aq no estuviera presente\*(dg), o un solo carácter sin ningún otro significado adicional (ajustando con ese carácter). Un A \(aq{\(aq seguido de un carácter diferente de un dígito es un carácter ordinario, no el principio de un límite.\*(dg Es ilegal terminar una ER con \(aq\e\(aq. .PP Una \fIexpresión con corchetes\fP es una lista de caracteres entre unos "\fI[]\fP". Normalmente ajusta con solo uno de los caracteres de la lista (pero vea más adelante). Si la lista comienza por \(aq\(ha\(aq, ajusta con un solo carácter (pero vea más adelante) que \fIno\fP pertenezca al resto de la lista. Si hay en la lista dos caracteres separados por \(aq\-\(aq, es una abreviación de un \fIrango\fP completo de caracteres entre dos (inclusive) en la secuencia, por ejemplo "\fI[0\-9]\fP" en ASCII ajusta con cualquier dígito decimal. Es ilegal\*(dg que dos intervalos compartan un carácter, p. ej: "\fIa\-c\-e\fP". Los rangos son muy dependientes de la secuencia de especificación y los programas portables deberían evitar utilizarlos. .PP Para incluir un literal \(aq]\(aq en la lista, debe aparecer el primero en la misma (siguiendo a un posible \(aq\(ha\(aq). Para incluir un literal \(aq\-\(aq), debe aparecer el primero o el último en la lista, o ser el segundo carácter de un rango. Para usar un literal \(aq\-\(aq) como el primer carácter de un rango, debe rodearse entre "\fI[.\fP" y "\fI.]\fP" para hacerlo un elemento a tratar (vea más abajo). Con la excepción de estas y algunas combinaciones que usan \(aq[\(aq (vea los siguientes párrafos), todos los otros caracteres especiales, incluyendo \(aq\e\(aq, pierden su significado especial dentro de una expresión entre corchetes. .PP Dentro de una expresión entre corchetes, un elemento a tratar (un carácter, una secuencia de más de un carácter que se interpreta como si fuera un solo carácter, o un nombre de secuencia de definición incluido entre "\fI[.\fP" y "\fI.]\fP" se entiende como la secuencia de caracteres de ese elemento. La secuencia es un elemento aislado de la lista contenida en la expresión con corchetes. Una expresión con corchetes que contenga un elemento de más de un carácter puede ajustar por más de un carácter, por ejemplo si la secuencia incluye un elemento "ch", entonces la ER "\fI[[.ch.]]*c\fP" ajusta con los primeros cinco caracteres de "chchcc". .PP Dentro de una expresión con corchetes, un elemento englobado entre "\fI[=\fP" y "\fI=]\fP" es una clase de equivalencia, comprendiendo las secuencias de caracteres de todos los elementos equivalentes a ese otro, incluyéndose a él mismo. (Si no hay ningún otro elemento equivalente, el tratamiento es como si los delimitadores hubieran sido "\fI[.\fP" y "\fI.]\fP".) Por ejemplo, si o y \o'o\(ha' son miembros de una clase de equivalencia, entonces "\fI[[=o=]]\fP", "\fI[[=\o'o\(ha'=]]\fP" y "\fI[o\o'o\(ha']\fP" son todos sinónimos. Una clase de equivalencia no\*(dg puede formar parte de un intervalo. .PP Dentro de una expresión con corchetes, el nombre de una \fIclase de caracteres\fP englobado entre "\fI[:\fP" y "\fI:]\fP" se interpreta como la lista de todos los caracteres que pertenecen a esa clase. Los nombre de clase de caracteres estándar son: .PP .RS .TS l l l. alnum digit punct alpha graph space blank lower upper cntrl print xdigit .TE .RE .PP .\" As per http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=295666 .\" The following does not seem to apply in the glibc implementation .\" .PP .\" There are two special cases\*(dg of bracket expressions: .\" the bracket expressions "\fI[[:<:]]\fP" and "\fI[[:>:]]\fP" match .\" the null string at the beginning and end of a word respectively. .\" A word is defined as a sequence of .\" word characters .\" which is neither preceded nor followed by .\" word characters. .\" A word character is an .\" .I alnum .\" character (as defined by .\" .BR wctype (3)) .\" or an underscore. .\" This is an extension, .\" compatible with but not specified by POSIX.2, .\" and should be used with .\" caution in software intended to be portable to other systems. Están compuestos por las clases de caracteres definidos en \fBwctype\fP(3). Localmente podrán proveerse de otras. Una clase de caracteres no puede formar parte de un rango. .PP En el caso en que una ER puede ajustar con más de una subcadena de la cadena dada, la ER se ajusta con aquella que comience antes en la cadena dada. Si la ER puede ajustar con varias subcadenas que comienzan en el mismo punto, se ajusta con la más larga. Las subexpresiones también ajustan con las subcadenas más largas posibles, sujetas a la restricción de que el ajuste global sea el más largo posible, con subexpresiones que empiecen antes en la ER con mayor prioridad que aquellas que comiencen después. Nótese que las subexpresiones de nivel más alto tienen prioridad respecto a sus subexpresiones componentes de nivel inferior. .PP Las longitudes de los ajustes son medidas en caracteres, no en elementos. Una cadena vacía se considera más larga que cualquier otro ajuste. Por ejemplo, "bb*" se ajusta con los tres caracteres del centro de "abbbc", "\fI(wee|week)(knights|nights)\fP" se ajusta con los diez caracteres de "weeknights" , cuando "\fI(.*).*\fP" se intenta ajustar con "abc" la subexpresión se ajusta con los tres caracteres, y cuando "\fI(a*)*\fP" se intenta ajustar con "bc" tanto la ER como la subexpresión entre paréntesis se ajustan a la cadena vacía. .PP Si se ha especificado un ajuste no dependiente de las mayúsculas, el efecto es como si todas las distinciones entre mayúsculas y minúsculas hubieran desaparecido del alfabeto. Cuando un término del alfabeto existe tanto en mayúsculas como en minúsculas aparece como un carácter ordinario fuera de una expresión con corchetes, se transforma en una expresión con corchetes conteniendo los dos casos, por ejemplo, \(aqx\(aq se convierte en "\fI[xX]\fP". Cuando aparece dentro de una expresión con corchetes, todos los casos posibles son añadidos a la expresión con corchetes, de tal manera que (por ejemplo) "\fI[x]\fP" se convierte en "\fI[xX]\fP" y "\fI[\(hax]\fP" se convierte en "\fI[\(haxX]\fP". .PP No se impone ningún límite en particular en la longitud de las ER\*(dg. Los programas que deban ser portables no deben emplear ER más largas de 256 bytes, ya que una implementación puede rechazar el aceptar estas ER y seguir cumpliendo POSIX. .PP Las expresiones regulares obsoletas ("basic") difieren en varios aspectos. \(aq|\(aq, \(aq+\(aq y \(aq?\(aq son caracteres ordinarios y no existe el equivalente para sus funcionalidades. Los delimitadores para los límites son "\fI\e{\fP" y "\fI\e}\fP", con \(aq{\(aq y \(aq}\(aq como caracteres ordinarios. Los paréntesis para subexpresiones anidadas son "\fI\e(\fP" y "\fI\e)\fP", siendo \(aq(\(aq and \(aq)\(aq caracteres ordinarios. \(aq^\(aq es un carácter ordinario excepto en el principio de la ER o\*(dg al principio de una subexpresión con paréntesis, \(aq$\(aq es un carácter ordinario excepto al final de la ER o\*(dg al final de una subexpresión con paréntesis, y \(aq*\(aq es un carácter ordinario si aparece al principio de la ER o al principio de una subexpresión con paréntesis (después de un posible \(aq\(ha\(aq) inicial). .PP Finalmente, existe un nuevo tipo de átomo, la \fIreferencia hacia atrás\fP: \(aq\e\(aq seguido por un dígito decimal mayor que cero \fId\fP ajusta con la misma secuencia de caracteres ajustada por la subexpresión con paréntesis \fId\fP\-ésima (numerando las subexpresiones por las posiciones de sus paréntesis de apertura, y de izquierda a derecha), de tal manera que (por ejemplo) "\fI\e([bc]\e)\e1\fP" ajusta con "bb" o "cc" pero no con "bc". .SH ERRORES Tener dos tipos de ER es molesto. .PP La especificación actual de POSIX.2 dice que un \(aq)\(aq es un carácter ordinario en ausencia de un \(aq(\(aq sin ajustar; este fue un resultado no intencionado de un error de redacción, y es probable que sea modificado. Evite usarlo. .PP Las referencias hacia atrás son una espantosa 'chapuza', añadiendo bastantes problemas para una implementación eficiente. También hay cosas vagamente definidas (¿ "\fIa\e(\e(b\e)*\e2\e)*d\fP" ajusta con "abbbd"?). Evite usarlo. .PP .\" As per http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=295666 .\" The following does not seem to apply in the glibc implementation .\" .PP .\" The syntax for word boundaries is incredibly ugly. La especificación POSIX.2 sobre el ajuste independiente de mayúsculas es muy vaga. La definición "mayúsculas o minúsculas implican al otro" (\fBN. del T.\fP "one case implies all cases") dada arriba es un consenso entre todos los implementadores como la buena interpretación. .SH AUTOR .\" Sigh... The page license means we must have the author's name .\" in the formatted output. Esta página ha sido obtenida del paquete regex de Henry Spencer. .SH "VÉASE TAMBIÉN" \fBgrep\fP(1), \fBregex\fP(3) .PP POSIX.2, sección 2.8 (Regular Expression Notation). .SH COLOFÓN Esta página es parte de la versión 5.10 del proyecto Linux \fIman\-pages\fP. Puede encontrar una descripción del proyecto, información sobre cómo informar errores y la última versión de esta página en \%https://www.kernel.org/doc/man\-pages/. .PP .SH TRADUCCIÓN La traducción al español de esta página del manual fue creada por Juan José López Mellado y Marcos Fouces . .PP Esta traducción es documentación libre; lea la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 .UE o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD. .PP Si encuentra algún error en la traducción de esta página del manual, envíe un correo electrónico a .MT debian-l10n-spanish@lists.debian.org .ME .