Que tipo de mecanismo de expressão regular o bash usa?


12

Eu uso o RegEx Buddy para criar protótipos e depurar minhas expressões regulares. O RegEx Buddy permite que eu escolha entre vários tipos diferentes de mecanismos de expressão regular (.NET, Java, Perl, GNU BRE, GNU ERE, POSIX, BRE, POSIX ERE etc.).

Qual mecanismo de expressão regular o bash usa (por exemplo, in ife casedeclarações)? Estou executando o Centos 5.5 de 32 bits 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.

Eu estou supondo que será GNU BRE ou GNU ERE?

Respostas:



3

O Bash não usar qualquer um dos tipos acima de expressões regulares na ife as casedeclarações.

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

Observe, no entanto, que os globs de shell estendidos devem ser ativados antes do uso shopt -s extglob em um script de shell ou de forma interativa.

Em um único local excepcional, ou seja, dentro do [[ ]]comando condicional, a =~relação binária permite verificar uma sequência no lado esquerdo contra uma expressão regular estendida ERE no lado direito.


0

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

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.