Quale tipo di motore di espressioni regolari usa bash?


12

Uso RegEx Buddy per prototipare ed eseguire il debug delle mie espressioni regolari. RegEx Buddy mi permette di scegliere tra diversi tipi di motori di espressioni regolari (.NET, Java, Perl, GNU BRE, GNU ERE, POSIX, BRE, POSIX ERE ecc.).

Quale motore di espressioni regolari usa bash (ad esempio in ife caseistruzioni)? Sto usando Centos 5.5 a 32 bit e 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.

Immagino che sarà GNU BRE o GNU ERE?

Risposte:



3

Bash non utilizzare uno qualsiasi dei tipi di cui sopra di espressioni regolari in ife le casedichiarazioni.

Piuttosto, utilizza modelli glob shell, che sono meno potenti di qualsiasi tipo di espressione regolare. Le versioni relativamente nuove di bash consentono anche l'uso di schemi glob estesi che sono espressamente uguali alle espressioni regolari senza ancore (linea) ma includendo termini negati, ma con una sintassi diversa da qualsiasi dei suddetti tipi di espressioni regolari.

Si noti tuttavia che i globs di shell estesi devono essere abilitati prima dell'uso shopt -s extglob sia in uno script di shell che in modo interattivo.

In un unico posto eccezionale, vale a dire all'interno del [[ ]]comando condizionale, la =~relazione binaria consente di controllare una stringa sul lato sinistro contro un'espressione regolare estesa ERE sul lato destro.


0

Secondo la guida di Bash collegata, Bash (dalla versione 3.0+) utilizza: "il dialetto Extended Regular Expression (ERE) ".

Ulteriori informazioni su quel dialetto sono disponibili qui .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.