Que tipo de mecanismo de expressão regular é usado pelo bash?

11

Eu uso RegEx Buddy para prototipar e depurar minhas expressões regulares. RegEx Buddy permite-me escolher entre vários tipos diferentes de motores de expressões regulares (.NET, Java, Perl, GNU BRE, GNU ERE, POSIX, BRE, POSIX ERE, etc.).

Qual mecanismo de expressões regulares o bash usa (por exemplo, em if e case declarações)? Estou executando o Centos 5.5 32 bit e o 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.

Suponho que seja o GNU BRE ou o GNU ERE?

    
por Kev 23.06.2011 / 10:54

3 respostas

10

bash (e shells POSIX em geral) não usam expressões regulares na declaração case , e sim padrões glob .

Há suporte limitado para expressões regulares usando o operador =~ ; Vejo detalhes em: link ,
que diz que bash usa expressões regulares estendidas (ERE).

    
por 23.06.2011 / 10:57
2

O Bash não usa nenhum dos tipos de expressões regulares acima nas declarações if e case .

Em vez disso, ele usa padrões de glob globalização, que são menos poderosos que qualquer tipo de expressão regular. Versões relativamente novas do bash também permitem o uso de padrões glob ampliados que são expressivamente iguais a expressões regulares sem âncoras (de linha), mas incluindo termos negados, mas com uma sintaxe diferente de qualquer um dos tipos de expressão regular mencionados acima.

Observe, entretanto, que os globs de shell estendidos devem ser ativados antes do uso com %código% tanto em um script de shell ou interativamente.

Em um único lugar excepcional, ou seja, dentro do comando condicional shopt -s extglob , a relação binária [[ ]] permite verificar uma string no lado esquerdo contra uma expressão regular estendida ERE no lado direito.

    
por 16.09.2014 / 09:58
0

De acordo com o guia Bash vinculado, o Bash (desde a versão 3.0+) usa: "o dialeto Expressão Regular Estendida (ERE) ".

Mais informações sobre esse dialeto podem ser encontradas aqui .

    
por 28.03.2013 / 20:28