O que faz. partida?

3

Ao trabalhar com expressões regulares, foi-me dito que um caractere de ponto . corresponderá a tudo .

Exceto para novas linhas \n .

Existem outras exceções? E o caractere NUL \b ou o caractere de retrocesso %code% ou qualquer outro caractere ASCII não imprimível?

Diferentes utilitários / programas como sed, awk, perl e vim se comportam de maneira diferente ou igual neste aspecto?

    
por Cory Klein 21.09.2011 / 19:56

3 respostas

3

De info regex :

3.2 The Match-any-character Operator ('.')
==========================================

This operator matches any single printing or nonprinting character
except it won't match a:

 newline
      if the syntax bit 'RE_DOT_NEWLINE' isn't set.

 null
      if the syntax bit 'RE_DOT_NOT_NULL' is set.
    
por 21.09.2011 / 20:12
1

. é equivalente a [^\n] para todos os tipos de regex UNIX padrão, no entanto, no Windows, é comumente [^\r\n] devido à sintaxe de terminações de linha no estilo do Windows. Em outras plataformas, deve avaliar para qualquer que seja a sequência de nova linha padrão.

No Perl e em alguns outros idiomas, o modo de linha única fará com que . também corresponda a \n (ou [\r\n] nos sabores de regex do Windows, etc.), fazendo com que corresponda literalmente a qualquer coisa.

Tenha em mente que o significado de . pode mudar dependendo do contexto, por exemplo, nas expressões de colchetes POSIX, o caractere de ponto corresponde a um ponto literal.

    
por 21.09.2011 / 20:12
0

Se você usar qualquer um dos Utilitários do Plan 9 , talvez o Editor de Sam , que usa Expressões Regulares estruturais, o ' ' O meta-caractere corresponde a todos os caracteres exceto newline. Acredito que '@' corresponda a qualquer caractere único, incluindo uma nova linha. A natureza das expressões regulares estruturais encoraja a escrita de padrões de várias linhas, ou talvez "padrões que ignoram a estrutura da linha". Parece que há um módulo Python de expressão regular estrutural no Google Code, mas não consigo pesquisar muito mais no caminho de implementações.

    
por 21.09.2011 / 21:51