Re: GREP: D?vi da com express?o regular

Matias Schweizer <matias-7pUm/SSSJFa7hsvYdc9FTl/I71DsQ//[email protected]> Wed, 19 Sep 2007 12:42:16 -0300
Newsgroups gmane.org.user-groups.linux.parana
Message-ID <[email protected]>
>
>N verdade os "escapes" não funcionam muito bem no "[ ]", mas passar o "-" para o fim do padrão parece fumcionar também :

Realmente foi isso. Eu apenas mudei o - para o começo, ao invés do
final.

tks.

[]´s


>echo "<<mailto:matias%40spmo-delismo.com.br>matias-EQc7d3XahTW9lAl/[email protected]>"|grep -m 1 -o -e '[a-z0-9_.-]*@[a-z0-9.-]*[a-z0-9-]*'|tail -n 1
>
>OBS: Eu usei (') em lugar de (") para que a shell não tente expandir os
>padrões d pesuisa, o que poderia produzir alguns resultados bem
>esquisitos. ;)
>
>Para exemplificar o problema dos (aparentes) "escapes" no padrão interno
>do "[ ]" aí vão dois exemplos usando (') em lugar de (") :
>
>echo '<mat\<mailto:ias%40spmo-delismo.com.br>ias-EQc7d3XahTW9lAl/[email protected]>'|grep -m 1 -o -e '[a-z0-9_.-]*@[a-z0-9.-]*[a-z0-9-]*'|tail -n 1
><mailto:ias%40spmo-delismo.com.br>ias-EQc7d3XahTW9lAl/[email protected]
>
>echo '<mat\<mailto:ias%40spmo-delismo.com.br>ias-EQc7d3XahTW9lAl/[email protected]>'|grep -m 1 -o -e '[a-z0-9_.-\]*@[a-z0-9.-]*[a-z0-9-]*'|tail -n 1
>mat\<mailto:ias%40spmo-delismo.com.br>ias-EQc7d3XahTW9lAl/[email protected]
>
>Como pode ser visto nos exemplos acima, o "\" dentro do "[ ]" se torna
>apenas mais um caráter da pesquisa, em lugar de um "escape" como esperado.
>
>(/me *acha* que "-" não é caráter válido para nomes de máquinas ou
>domínios, mas estou com preguiça de verificar a RFC correspondente;))
>
>Hmmmm..... Houston, acho que temos um problema, como resolver então ?
>
>Bem, como em qualquer área de TI, se nada funciona a gente consulta o
>manual ;) :
>
>$ man 7 regex
>REGEX(7) REGEX(7)
>
>NAME
>regex - POSIX.2 regular expressions
>
>DESCRIPTION
>Regular expressions (``RE''s), as defined in POSIX.2, come in two
>========8<------- indo para onde interessa -----------------
>
>To include a literal `]' in the list, make it the first character (fol-
>lowing a possible `^'). To include a literal `-', make it the first or
>last character, or the second endpoint of a range. To use a literal
>`-' as the first endpoint of a range, enclose it in `[.' and `.]' to
>make it a collating element (see below). With the exception of these
>and some combinations using `[' (see next paragraphs), all other spe-
>cial characters, including `\', lose their special significance within
>a bracket expression.
>
>========8<------- o resto no manual, vale a leitura ----------
>
>Ah !!! O texto acima explica porque ao colocar o "-" no fim da relação
>a pesquisa funcionou como esperado. O parágrafo também nos ajuda a
>compreender porque o "\" não funciona como um filtro, como poderia parecer
>para os desavisados. Ao colocar o "\" antes do "-" o que se fez foi
>separar o "-" da faixa anterior, que era o erro reportado. O texto acima
>é bem enfático em reforçar que não se pode compartilhar extremos de faixas
>de pesquisa.
>
>Resumo, se nada funcionar : RTFM ;)
>
>Roxo
>
>-- 
>---------------- Non luctari, ludare -------------------+ WYSIWYG Editor ?
>Fernando M. Roxo da Motta <<mailto:roxo%40roxo.org>[email protected]> | VI !!
>Except where explicitly stated I speak on my own behalf.| I see text,
>( Usuário Linux registrado #39505 ) | I get text !
>
> 


Matias Schweizer
matias-7pUm/SSSJFa7hsvYdc9FTl/I71DsQ//[email protected]
SCHNAUZER Plastimodelismo
http://www.spmodelismo.com.br/