Provided by: manpages-es_4.27.0-1_all bug

NOMBRE

       regex - expresiones regulares POSIX.2

DESCRIPCIÓN

       Las  expresiones regulares ("ER"s), tal y como se definen en POSIX.2, tienen dos formas: ER modernas (tal
       como egrep(1); llama a estas ER "extendidas" de POSIX.2) y ER  obsoletas  (las  que  usa  ed(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.

       Una ER (moderna) es una (!) o más de una(!) rama no vacía, separadas por '|'. Acepta cualquier  cosa  que
       se corresponda con una de las ramas.

       Una  rama es una(!) o más de una pieza, concatenadas. Acepta algo que corresponda con la primera, seguida
       por algo que corresponda con la segunda, etc.

       Una pieza es un átomo posiblemente seguido por un solo(!) '*', '+',  '?',  o  por  un  límite.  Un  átomo
       seguido  por  '*'  ajusta  con  una  secuencia de 0 o más átomos. Un átomo seguido por '+' ajusta con una
       secuencia de 1 o más átomos. Un átomo seguido por '?'  ajusta con una secuencia de 0 o 1 átomo.

       Un límite es un '{'  seguido  por  un  entero  decimal  sin  signo,  posiblemente  seguido  por  una  ','
       posiblemente  seguida  por  otro  entero  decimal sin signo, y todo acabado por un '}'. Los enteros deben
       encontrarse entre 0 y RE_DUP_MAX (255(!)) 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 i y sin  coma  ajusta  con  una
       secuencia  de  exactamente  i  átomos.  Un átomo seguido por un límite conteniendo un entero i y una coma
       ajusta con una secuencia de i o más átomos. Un átomo seguido por un límite conteniendo dos enteros i y  j
       ajusta con una secuencia de entre i y j átomos (ambos inclusive).

       Un  átomo  es  una  expresión  regular  encerrada  entre  "()" (que coincide con una concordancia para la
       expresión regular), un conjunto vacío de "()" (que coincide con la cadena nula)(!), una  expresión  entre
       corchetes (ver más abajo), '.' (que coincide con cualquier carácter individual), '^' (que coincide con la
       cadena  nula  al principio de una línea), '$' (que coincide con la cadena nula al final de una línea), un
       '\' seguido de uno de los caracteres "^.[$()|*+?{\"  (que  coincide  con  ese  carácter  tomado  como  un
       carácter  ordinario),  un '\' seguido de cualquier otro carácter(!) (que coincide con ese carácter tomado
       como un carácter ordinario, como si el '\' no había estado presente(!)), o  un  solo  carácter  sin  otro
       significado  (que  coincida  con ese carácter). Un '{' seguido de un carácter distinto de un dígito es un
       carácter normal, no el comienzo de un límite(!). Es ilegal finalizar una RE con '\'.

       Una expresión con corchetes es una lista de caracteres entre unos "[]". Normalmente ajusta con  solo  uno
       de  los  caracteres de la lista (pero vea más adelante). Si la lista comienza por '^', ajusta con un solo
       carácter (pero vea más adelante) que no pertenezca al  resto  de  la  lista.  Si  hay  en  la  lista  dos
       caracteres separados por '-', es una abreviación de un rango completo de caracteres entre dos (inclusive)
       en  la  secuencia, por ejemplo "[0-9]" en ASCII ajusta con cualquier dígito decimal. Es ilegal(!) que dos
       intervalos compartan un carácter, p. ej: "a-c-e". Los rangos son muy  dependientes  de  la  secuencia  de
       especificación y los programas portables deberían evitar utilizarlos.

       Para  incluir  un ']' literal en la lista, conviértalo en el primer carácter (después de un posible '^').
       Para incluir un '-' literal, conviértalo en el primer o último carácter, o en el segundo punto  final  de
       un  rango.  Para  utilizar un '-' literal como el primer punto final de un rango, enciérrelo entre "[." y
       ".]" para convertirlo en un elemento de ordenación (consulte a continuación). Con la excepción de estos y
       algunas combinaciones que utilizan '[' (consulte los párrafos siguientes),  todos  los  demás  caracteres
       especiales, incluido '\', pierden su significado especial dentro de una expresión entre corchetes.

       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  "[." y ".]" 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 "[[.ch.]]*c" ajusta con los primeros cinco  caracteres
       de "chchcc".

       Dentro  de  una  expresión  con  corchetes,  un  elemento  englobado  entre  "[="  y "=]" 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 "[." y  ".]".)  Por  ejemplo,  si  o  y  ^  son  miembros  de  una  clase  de
       equivalencia,  entonces,  entonces  "[[=o=]]",  "[[='=]]"  y  "[oo']"  son  todos sinónimos. Una clase de
       equivalencia no(!) puede ser el extremo de un intervalo.

       Dentro de una expresión con corchetes, el nombre de una clase de caracteres englobado entre "[:"  y  ":]"
       se  interpreta  como  la lista de todos los caracteres que pertenecen a esa clase. Los nombre de clase de
       caracteres estándar son:

              alnum   digit   punct
              alpha   graph   space
              blank   lower   upper
              cntrl   print   xdigit

       Están compuestos por las clases de caracteres definidos en  wctype(3).  Localmente  podrán  proveerse  de
       otras. Una clase de caracteres no puede formar parte de un rango.

       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.

       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", "(wee|week)(knights|nights)" se ajusta con los diez caracteres de "weeknights" , cuando "(.*).*"
       se intenta ajustar con "abc" la subexpresión se ajusta con los  tres  caracteres,  y  cuando  "(a*)*"  se
       intenta ajustar con "bc" tanto la ER como la subexpresión entre paréntesis se ajustan a la cadena vacía.

       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,  'x'  se  convierte  en  "[xX]". 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)  "[x]"  se
       convierte en "[xX]" y "[^x]" se convierte en "[^xX]".

       No  se  impone  ningún  límite  en  particular  en  la longitud de las ER(!). 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.

       Las  expresiones regulares obsoletas 'básicas' difieren en varios aspectos. '|', '+' y '?' son caracteres
       ordinarios y no existe un equivalente para su funcionalidad. Los delimitadores para los límites son  '\{'
       y  '\}',  con  '{' y '}' por sí mismos como caracteres ordinarios. Los paréntesis para las subexpresiones
       anidadas son '\(' y '\)', con '(' y ')' por sí mismos como caracteres  ordinarios.  '^'  es  un  carácter
       ordinario excepto al principio de la RE o(!) al principio de una subexpresión entre paréntesis, '$' es un
       carácter ordinario excepto al final de la RE o(!) al final de una subexpresión entre paréntesis, y '*' es
       un  carácter  ordinario  si  aparece  al  principio  de  la  RE  o al principio de una subexpresión entre
       paréntesis (después de una posible '^' inicial).

       Finalmente, hay un nuevo tipo de átomo, una referencia inversa: '\' seguido de un dígito decimal distinto
       de cero d coincide con la misma secuencia de caracteres coincidentes con  la  désima  subexpresión  entre
       paréntesis (numerando las subexpresiones por las posiciones de sus paréntesis de apertura, de izquierda a
       derecha), por lo que que, por ejemplo, "\([bc]\)\1" coincide con "bb" o "cc" pero no con "bc".

ERRORES

       Tener dos tipos de ER es molesto.

       La  especificación  actual  de POSIX.2 dice que un ')' es un carácter ordinario en ausencia de un '(' sin
       ajustar; este fue un resultado no  intencionado  de  un  error  de  redacción,  y  es  probable  que  sea
       modificado. Evite usarlo.

       Las  referencias  inversas  son un error terrible que plantea problemas importantes para implementaciones
       eficientes. También están  definidas  de  forma  un  tanto  ambigua  (  ¿'a\(\(b\)*\2\)*d'  coincide  con
       'abbbd'?). Evite usarlas.

       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" (N. del T.  "one case implies all cases") dada  arriba  es  un
       consenso entre todos los implementadores como la buena interpretación.

AUTOR

       Esta página ha sido obtenida del paquete regex de Henry Spencer.

VÉASE TAMBIÉN

       grep(1), regex(3)

       POSIX.2, sección 2.8 (Regular Expression Notation).

TRADUCCIÓN

       La   traducción  al  español  de  esta  página  del  manual  fue  creada  por  Juan  José  López  Mellado
       <laveneno@hotmail.com> y Marcos Fouces <marcos@debian.org>

       Esta traducción es documentación libre;  lea  la  GNU General Public License Version 3  o  posterior  con
       respecto a las condiciones de copyright.  No existe NINGUNA RESPONSABILIDAD.

       Si  encuentra  algún  error  en  la  traducción  de esta página del manual, envíe un correo electrónico a
       debian-l10n-spanish@lists.debian.org.

Páginas de Manual de Linux 6.9.1                  15 Junio 2024                                         regex(7)