Uso RegEx Buddy para crear prototipos y depurar mis expresiones regulares. RegEx Buddy me permite elegir entre varios tipos diferentes de motores de expresión regular (.NET, Java, Perl, GNU BRE, GNU ERE, POSIX, BRE, POSIX ERE, etc.).
¿Qué motor de expresión regular usa bash (por ejemplo, en if
y case
declaraciones)? Estoy ejecutando Centos 5.5 de 32 bits y bash 3.2.25 (1):
[kevin@mon01 scratch]$ bash --version
GNU bash, version 3.2.25(1)-release (i686-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
¿Supongo que será GNU BRE o GNU ERE?
Bash no usa ninguno de los tipos anteriores de expresiones regulares en
if
lascase
declaraciones y.Más bien, utiliza patrones de globos de concha, que son menos potentes que cualquier tipo de expresión regular. Las versiones relativamente nuevas de bash también permiten el uso de patrones glob extendidos que son expresamente iguales a las expresiones regulares sin anclajes (de línea) pero que incluyen términos negados, pero con una sintaxis diferente de cualquiera de los tipos de expresión regular mencionados anteriormente.
Sin embargo, tenga en cuenta que los globos de shell extendidos deben habilitarse antes de su uso
shopt -s extglob
tanto en un script de shell como de forma interactiva.En un único lugar excepcional, es decir, dentro del
[[ ]]
comando condicional, la=~
relación binaria permite verificar una cadena en el lado izquierdo contra una expresión regular extendida ERE en el lado derecho.fuente
Según la guía de Bash vinculada, Bash (desde la versión 3.0+) usa: "el dialecto de Expresión regular extendida (ERE) ".
Puede encontrar más información sobre ese dialecto aquí .
fuente