¿Qué tipo de motor de expresión regular usa bash?


12

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 ify casedeclaraciones)? 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?

Respuestas:



3

Bash no usa ninguno de los tipos anteriores de expresiones regulares en iflas casedeclaraciones 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.


0

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í .

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.