BashPatrón de coincidencia y expresiones regulares


Sintaxis

  • $ shopt -u opción # Desactivar la 'opción' incorporada de Bash
  • Opción $ shopt -s # Activar la 'opción' incorporada de Bash

Observaciones

Clases de personajes

Las clases de caracteres válidos para [] glob están definidas por el estándar POSIX:

alnum alfa ascii en blanco cntrl dígito gráfico letra inferior espacio punteado palabra superior xdigit

Dentro de [] se puede usar más de una clase de caracteres o rango, por ejemplo,

$ echo a[a-z[:blank:]0-9]*

coincidirá con cualquier archivo que comience con una a seguido de una letra minúscula o un espacio en blanco o un dígito.

Sin embargo, debe tenerse en cuenta que un globo [] solo puede ser completamente negado y no solo partes de él. El carácter de negación debe ser el primer carácter después de la apertura [ , por ejemplo, esta expresión coincide con todos los archivos que no comienzan con una a

$ echo [^a]*

Lo siguiente hace coincidir todos los archivos que comienzan con un dígito o un ^

$ echo [[:alpha:]^a]*

No coincide con cualquier archivo o carpeta que comienza con la letra a excepción de una a porque el ^ se interpreta como un literal ^ .

Escapar de personajes glob

Es posible que un archivo o carpeta contenga un carácter global como parte de su nombre. En este caso, se puede escapar un globo con un \ precedente en orden para una coincidencia literal. Otro método consiste en utilizar el doble "" o de un solo '' cita para abordar el archivo. Bash no procesa globos que están encerrados dentro de "" o '' .

Diferencia a las expresiones regulares

La diferencia más significativa entre globs y expresiones regulares es que una expresión regular válida requiere un calificador y un cuantificador. Un calificador identifica con qué coincidir y un cuantificador indica con qué frecuencia debe coincidir con el calificador. El RegEx equivalente al * glob es .* Donde . significa cualquier carácter y * representa cero o más coincidencias del carácter anterior. El RegEx equivalente para el ? glob es .{1} . Como antes, el calificador . coincide con cualquier carácter y el {1} indica que coincide exactamente una vez con el calificador anterior. Esto no debe confundirse con el ? cuantificador, que coincide con cero o una vez en un RegEx. El [] glob se puede usar de la misma manera en un RegEx, siempre que esté seguido de un cuantificador obligatorio.

Expresiones Regulares Equivalentes

Globo RegEx
* .*
? .
[] []

Patrón de coincidencia y expresiones regulares Ejemplos relacionados