A Expressão Regular Básica é igual à expansão do nome do caminho no shell? [duplicado]

0

Estou aprendendo sobre expressão regular e eles são divididos em básicos e estendidos.

Expressão Regular Básica (BRE) usa o meta-caractere [ ] ^ $ . * .

Funciona bem no comando grep . Mas, quando usamos o comando ls , echo ou alguma outra coisa, também funciona bem (por exemplo, ls -al [abc]*.txt )

Mas, quando eu aprendo a seção sobre a expansão do nome do caminho, ele usa o metacharcter do BRE.

Então, eu acho que eles são iguais. Estou certo?

    
por A.Cho 20.02.2016 / 04:46

1 resposta

2

Expansão do nome do caminho não possui nenhum significado especial para ^ , $ ou . .

  1. * em um BRE corresponde a zero ou mais repetições do caractere ou grupo anterior (então a* , a , aa , aaa ,…). * na expansão do nome do caminho corresponde a qualquer string, independente do caractere anterior (portanto, a*a , ab , a !!! and any ?? string whatsoever ,… - nota : não corresponde ao seqüência vazia, que faz o a* BRE). Similarmente para ? .
  2. A negação em [] é feita por meio de uma porcentagem líder no^ no BRE e uma porcentagem líder no! na expansão do nome do caminho.
  3. . corresponde a qualquer caractere no BRE, enquanto . não possui significado especial em um padrão nome do caminho . Tem significado no que é correspondido , mas não no próprio padrão.

Além de algumas semelhanças superficiais, elas são muito diferentes. Algumas coisas são possíveis em BREs e impossíveis na correspondência de nome de caminho (por exemplo, tente corresponder um nome de arquivo composto apenas por a s).

    
por 20.02.2016 / 04:59

Tags