Por que existem tantas variantes de expressões regulares? [fechadas]

13

Hoje, quando analisei o código-fonte de nosso projeto, descobri que há muitos "espaços" e "guias" desnecessários localizados no final de cada linha. Então, decidi excluí-los com expressão regular.

No entanto, descobri que o comando sed -i '/\s+$/d' não funciona. Até que eu mudei o comando para see -ri '/\s+$/d' , ele agiu como minha expectativa. No manual de sed , ele disse que -r chama o regexp estendido.

Estou confuso, por que existem tantas variantes de expressões regulares? Como vim / emacs / perl / sed regexp. Por que o regexp não oferece uma interface de usuário única?

    
por hero2008 16.07.2012 / 15:16

1 resposta

19

Por razões históricas. Não existe uma definição única de sintaxe de "expressão regular". O conceito de uma expressão regular em si não tem nada a ver com a sintaxe real que descreve formalmente. As pessoas vêm com diferentes maneiras de dizer a mesma coisa, daí estilos diferentes de sintaxe regex.

No entanto, você descobrirá que existem basicamente dois grupos de definições nos seguintes dias:

  1. expressões regulares POSIX que especificam Basic ( BRE) e expressões regulares estendidas (ERE). A confusão começa onde, por exemplo, Expressões regulares básicas usam \( \) para denotar um grupo e Expressões regulares estendidas usam ( ) para isso.

  2. expressões regulares baseadas em Perl . As expressões regulares Perl definem uma sintaxe mais consistente, onde, por exemplo, uma barra invertida sempre escapará de um caractere não alfanumérico. A sintaxe do regex Perl é encontrada em muitas linguagens de programação populares atualmente, de Java a Ruby.

Você pode conferir o artigo da Wikipédia sobre a sintaxe regex para obter mais informações.

    
por 16.07.2012 / 15:48

Tags