Opções do Grep para Expressões Regulares. (ERE, BRE, Perl regex) diferenças [duplicadas]

1

Eu estou pegando o jeito de grep e regex, mas estou confuso sobre as diferentes opções.

grep --help | grep -i "reg.*ex"
  -E, --extended-regexp     PATTERN is an extended regular expression (ERE)
  -G, --basic-regexp        PATTERN is a basic regular expression (BRE)
  -P, --perl-regexp         PATTERN is a Perl regular expression

Eu tenho um conhecimento geral de expressões regulares, mas muitas vezes me pego tropeçando no básico (por exemplo, usando '*' quando realmente requer '. *'), que eu culpo em não saber as diferenças entre o tipos de expressões regulares (ERE, BRE, regex Perl) .

É explicado em algum lugar em detalhes?

    
por Calculus Knight 28.02.2018 / 09:01

1 resposta

2

Respondendo a pergunta específica sobre * .

O caractere especial * em uma expressão regular (de qualquer tipo) atua na expressão anterior. Permite zero ou mais correspondências da expressão anterior. A expressão regular .* , portanto, corresponde a qualquer sequência, esteja vazia ou não.

O caractere globbing de nome de arquivo * corresponde a qualquer sequência (possivelmente vazia).

As expressões regulares não são padrões de globalização de nomes de arquivos (ou vice-versa). Essa diferença particular é entre expressões regulares e padrões globbing, e não uma diferença entre diferentes tipos de expressões regulares.

    
por 28.02.2018 / 11:54