egrep para hora no formato H: MM: SS

0

Trabalhando no arquivo, é necessário usar a marcação de hora no formato H: MM: SS. Eu tentei o seguinte egrep '[0-9]: [0-9]: [0-9]'. Não funcionou para mim. O que estou fazendo errado na regex?

    
por Serg12 02.05.2014 / 02:43

3 respostas

3

se você quiser fazer a correspondência para um jogador De 00:00:00 a 23:59:59

egrep '([0-1][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]'t

se você quiser fazer a correspondência para um jogador 12:00 às 12:59

egrep -i '((?:0[0-9]|1[012]):[0-5][0-9]:[0-5][0-9]\s?(?:a|p)m)'
    
por 03.05.2014 / 03:29
0

[0-9]:[0-9]:[0-9] corresponderia a H: M: S, bot não H: MM: SS.

Cada conjunto de colchetes corresponde a um único caractere.

Então, para obter algo que corresponda a H: MM: SS, você pode usar:

[0-9]:[0-9][0-9]:[0-9][0-9]

Note que o texto acima NÃO corresponderá a H: M: S

Para corresponder a H: MM: SS OU H: M: S OU H: M: SS OU H: MM: S use o seguinte

[0-9]:[0-9]+:[0-9]+

+ significa corresponder ao último caractere, 1 ou mais vezes (incluindo a primeira correspondência)

    
por 02.05.2014 / 03:11
0

Eu sugiro que você use

egrep '[0-9]{2}:[0-9]{2}:[0-9]{2}'

onde {2} significa corresponder ao último caractere pelo menos duas vezes e no máximo duas vezes (= exatamente duas vezes), onde o último caractere neste exemplo era um número entre 0 e 9.

Se você quiser pesquisar pelo menos um e no máximo dois, terá que alterá-lo para

egrep '[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}'

que corresponde, por exemplo, a 0:1:22 e 0:11:22 e 00:11:22 e 00:11:2 e assim por diante.

A resposta que Sirius_Black deu também está testando em tempo real. Minha resposta corresponderia a tempos irreais como 99:99:99 - o que poderia ser uma duração de tempo.

    
por 02.05.2014 / 06:50