Regex especifica até demais ...

12 views
Skip to first unread message

Ademir Francisco da Silva

unread,
Mar 17, 2010, 12:19:09 AM3/17/10
to expressoes...@googlegroups.com
Pessoal tudo bom …,

Em um arquivo baixado da internet tenho uma planilha configurada
aleatoriamente deste jei­to …

06 10 28 32 39 53 10 15 20 30
10 21 25 36 44 55 69 10 33 56

O que eu preciso é de uma regex( em python ) que me procure os 6
primeiros números de cada linha independentemente de quantas linhas
tenha o arquivo, contudo, não quero “casar” a partir do 7 número por
linha. De propósito eu coloquei o #10 nesta situação, ou seja, em meu
exemplo acima eu tenho na 1ª linha um #10 na 2ª coluna/posição e na 2ª
linha um #10 na 1ª posição( entre os 6 que é o que me interessa ).
Reparem que os 6 primeiros números( 00 – 99 ) sempre estarão em ordem
crescente e a partir do sétimo ordem aleatória. Reparem também, que o
1º #10 é idêntico ao 2º #10 de cada linha. Só mais um comentário, os
números abaixo de 10 terão obrigatoriamente um casamento de 2 dígitos,
ou seja, 01 e não 1. Não sei se ficou claro, então para qualquer
esclarecimento me perguntem …

É possível se criar uma RE tão especifica?. ( # = número )

Agradeço antecipadamente pois qualquer ajuda será bem-vinda. Obrigado.


1[],

--
Ademir Francisco da Silva

Fernando Z. Bob

unread,
Mar 17, 2010, 8:33:16 AM3/17/10
to expressoes...@googlegroups.com
Bom, se for para pegar os 6 primeiros números apenas por string, voce pode fazer assim
 
x = coleta a primeira linha de dados

e ai vc faz:

x[:17]

Pronto. Nem precisa de regex.

2010/3/17 Ademir Francisco da Silva <ademir...@gmail.com>

--
Você está recebendo esta mensagem porque se inscreveu no grupo "Expressões regulares" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para expressoes...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para expressoes-regul...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/expressoes-regulares?hl=pt-BR.


Ademir Francisco da Silva

unread,
Mar 17, 2010, 11:55:54 PM3/17/10
to expressoes...@googlegroups.com
Fernando,

Obrigado por sua pronta resposta, contudo não é tão simples assim,
leia novamente o meu 1º email, mas eu agradeço e muito, Valeu ...!

Pessoal,
Estou aguardando novas opiniões/sugestões.Se alguém tiver outras
ideias favor retornar-me ...


1[],

Ademir Francisco da Silva

Em 17/03/10, Fernando Z. Bob<fzma...@gmail.com> escreveu:

>> expressoes-regul...@googlegroups.com<expressoes-regulares%2Bunsu...@googlegroups.com>


>> .
>> Para obter mais opções, visite esse grupo em
>> http://groups.google.com/group/expressoes-regulares?hl=pt-BR.
>>
>>
>
> --
> Você está recebendo esta mensagem porque se inscreveu no grupo "Expressões
> regulares" dos Grupos do Google.
> Para postar neste grupo, envie um e-mail para
> expressoes...@googlegroups.com.
> Para cancelar a inscrição nesse grupo, envie um e-mail para
> expressoes-regul...@googlegroups.com.
> Para obter mais opções, visite esse grupo em
> http://groups.google.com/group/expressoes-regulares?hl=pt-BR.
>
>

Joel Landim

unread,
Mar 18, 2010, 8:43:50 AM3/18/10
to expressoes...@googlegroups.com
Bom dia Ademir,

Isto que voce pretende fazer é mais pratico criar um algoritimo do que tentar resolve com regex, claro, pode usar em conjunto mas não necessariamente somente ou somente o outro.

Pois, pelo que vejo, isso depende mais de logicas de decisões do que casamento de informações.

Abraços,
Joel Landim Mourão

Gustavo Dutra

unread,
Mar 18, 2010, 8:51:23 AM3/18/10
to expressoes...@googlegroups.com
Faça um loop em cada linha, e para cada linha use:

/^(\d+) (\d+) (\d+) (\d+) (\d+) (\d+)/

Cada número será um grupo.

2010/3/18 Joel Landim <jlmo...@gmail.com>



--
Att,
Gustavo Dutra -
www.gustavodutra.com

Thalles Robson

unread,
Mar 18, 2010, 9:37:07 AM3/18/10
to expressoes...@googlegroups.com
Isto dá até uma monografia. Criar um autômato finito com pilha para reconhecer essa entrada aí sua.
Nós usamos isso para reconhecer tokens como strings e comentários na construção de análisadores léxicos em compiladores.

Devemos sempre lembrar que expressões regulares não são tão poderosas quando precisamos de construções procedurais, isto é, elas são de natureza declarativa. Então, você pode seguir o conselho de  Joel e usar as ERs em conjunto com a linguagem de programação e a API de manipulação de Strings desta.

Não deixe que as maravilhas das expressões regulares se tornem parte do problema.
Thalles Robson

"Um plano só é bom nas mãos de quem pode executá-lo"

Starwars

----

thalle...@yahoo.co.uk
thal...@gmail.com
thalle...@yahoo.com.br

caio ariede

unread,
Mar 18, 2010, 7:29:32 PM3/18/10
to expressoes...@googlegroups.com
Minha tacada (não testei)

(?m)((\d{2})(\s\d{2}){5})

Caio Ariede
http://caioariede.com/


2010/3/18 Gustavo Dutra <gusta...@gmail.com>

caio ariede

unread,
Mar 18, 2010, 7:30:43 PM3/18/10
to expressoes...@googlegroups.com
Faltou o ^

(?m)^((\d{2})(\s\d{2}){5})

Caio Ariede
http://caioariede.com/


2010/3/18 caio ariede <caio....@gmail.com>

Ademir Francisco da Silva

unread,
Mar 18, 2010, 11:37:18 PM3/18/10
to expressoes...@googlegroups.com
Pessoal ...,

Quero agradecer e muito a iniciativa/tentativa de me ajudar, realmente
estou feliz com este altruísmo explicito ...

Informo a todos que já estou quase finalizando uma regex para suprir
as minhas necessidades( É incrivel como um pouco de paciência,
dedicação e estudo faz diferença no desenvovimento de uma regex ... ),
bom na verdade eu já há tinha desenvolvido( somente me faltava
resolver o caso do #10 que casa entre os 6 mas depois não casa mais na
mesma linha ), contudo eu queria ver sugestões para fazer uma
confrontação, contudo pelo que eu notei isto não vai ser possível ...
Não tem problema ...

Obrigado a todos que me retornaram por email, Valeu ...!


1[],


Ademir Francisco da Silva

Ps.: Quando tiver a mesma 100% desenvolvida eu a publico aqui...

Em 18/03/10, caio ariede<caio....@gmail.com> escreveu:

>>>>> <expressoes-regulares%2Bunsu...@googlegroups.com<expressoes-regulares%252Buns...@googlegroups.com>

>>>> Joel Landim Mourão
>>>>
>>>> --
>>>> Você está recebendo esta mensagem porque se inscreveu no grupo
>>>> "Expressões regulares" dos Grupos do Google.
>>>> Para postar neste grupo, envie um e-mail para
>>>> expressoes...@googlegroups.com.
>>>> Para cancelar a inscrição nesse grupo, envie um e-mail para

>>> Att,
>>> Gustavo Dutra -
>>> www.gustavodutra.com
>>>
>>> --
>>> Você está recebendo esta mensagem porque se inscreveu no grupo
>>> "Expressões
>>> regulares" dos Grupos do Google.
>>> Para postar neste grupo, envie um e-mail para
>>> expressoes...@googlegroups.com.
>>> Para cancelar a inscrição nesse grupo, envie um e-mail para

Reply all
Reply to author
Forward
0 new messages