Regex não corresponde

Regex não corresponde

por que isso não corresponde ..?

sed -e '/--Updated?[[:space:]]+Date/d' inputfile

esse..:

--Updated Date: 2013-11-06 15:32:13

d?é porque às vezes eu tenho Update Date, e às vezes Updated Date.

para remoção? Eu tentei \stambém, não funcionou.

Responder1

você precisa usar o -rparâmetro. tente usar

sed -r '/--Updated?[[:space:]]+Date/d' inputfile

atualizando resposta

Quando você usa sed '/something/d', todas as linhas que correspondem a isso serão excluídas.

-r - o parâmetro -r usa expressões regulares estendidas.

Dentro da expressão temos 2 expressões regulares.

[[:space:]]- Combine com todos os caracteres de espaço em branco, incluindo quebras de linha

? - optional

+- uma ou mais vezes.

ASSIM, o comando sed excluirá todas as linhas que correspondam a --updated e que um ou mais caracteres de espaço em branco e que Date, mas por causa do? o caractere d é opcional. como:

--Updated Date: 2013-11-06 15:32:13
--Updated   Date: 2013-11-06 15:32:13
--Updated           Date: 2013-11-06 15:32:13
--Update Date: 2013-11-06 15:32:13

Responder2

Para fazer isso usando regex básico POSIX, o mais próximo que posso chegar é:

sed '/--Updated*[[:space:]][[:space:]]*Date/d' inputfile

Infelizmente, não há substituto real para ?, então a *é usado, o que também corresponderia a vários ds. O +porém pode ser substituído simplesmente repetindo o padrão e usando a *para a segunda repetição.

Atualizar

Na verdade, a maneira de obter o efeito equivalente das expressões estendidas é usar dois padrões:

sed \'
  /--Updated[[:space:]][[:space:]]*Date/d
  /--Update[[:space:]][[:space:]]*Date/d
  ' inputfile

Responder3

Com gnu sed 4.2.2 no cygwin, adicione o -rsinalizador:

 '--Updated Date: 2013-11-06 15:32:13'|sed -r -e '/--Updated?[[:space:]]+Date/d'

não imprime nenhuma saída. -rativa expressões regulares estendidas ?e +funcionará como você espera. Oreferência para expressões regulares estendidasEu uso a maioria dos pontos ?e +preciso ter uma barra invertida em expressões regulares básicas (o padrão) para ter seu significado especial.

informação relacionada