PDA

Visualizza la versione completa : REGEX per mail


Mutato
26-07-2004, 09:45
Ciao, ho una serie di file di testo con del testo dentro, all'interno di questo testo ci sono degli indirizzi mail... io avrei bisogno di recuperare questi ultimi.

vorrei fare qualcosa tipo



$ cat testo | grep [regex] >> elenco.mail


ma come la costruisco una regex cosi'? inoltre devo usare grep o zgrep? sempre che sia la strada giusta.

KornShell
26-07-2004, 10:20
bash non lo conosco molto bene, io userei python....


#!/usr/env python
import re
target = re.compile(r'[a-z\-\.]+@+[a-z\-\.]+', re.IGNORECASE)
e_file = open('tuo_file', 'w')
for lines in e_file.readlines():
for word in lines::
if re.search(target, word):
print word
else:
pass

non l'ho provato, potrebbe esserci qualche errorino...

adarkar
26-07-2004, 10:54
provo, ma testalo prima!:

cat TESTO | grep '.+@(.+\.)+[com|net|it|org]' >>email

se non mi sono sbagliato troppo questo ti seleziona tutte le righe cone dentro qualcosa del tipo
nome@qualcosa.qualcosa.qualcosa.qualcosa.com o .net o .it o .org ecc.. con un numero qualunque di 'qualcosa'

chissÓ se ti pu˛ servire :fagiano: :fagiano:

Mutato
26-07-2004, 10:58
:cry:

Sono riuscito a fare questo:

a) sono sicuro che la mail inizia con info@

quindi

$ egrep 'To: info@+([a-z])+.+(it|org|net|com|fm)' ciao.mbox > hello

cosi' pero' riesco ad isolare la riga, ma non l'indirizzo mail pulito

KornShell
26-07-2004, 11:01
Originariamente inviato da Mutato
:cry:

cosi' pero' riesco ad isolare la riga, ma non l'indirizzo mail pulito

per quello dovresti usare python :yuppi:

adarkar
26-07-2004, 11:08
se nella regex ci metti un bel paio di:
\/ ..... \/
dopo puoi riferirti a ci˛ che Ŕ contenuto lý in mezzo con \1
x˛ i dettagli esatti al momento non te li so dire, mi deimentico sempre e ogni volta che lo faccio mi rileggo il man :stordita: :stordita:
cmq se gli dai un'occhio si capisce rapidamente come fare

Mutato
26-07-2004, 11:09
Originariamente inviato da adarkar
provo, ma testalo prima!:

cat TESTO | grep '.+@(.+\.)+[com|net|it|org]' >>email

se non mi sono sbagliato troppo questo ti seleziona tutte le righe cone dentro qualcosa del tipo
nome@qualcosa.qualcosa.qualcosa.qualcosa.com o .net o .it o .org ecc.. con un numero qualunque di 'qualcosa'

chissÓ se ti pu˛ servire :fagiano: :fagiano:

Ottimo si', stavo scrivendo il mio msg e in effetti e' il problema che avevo!!

Mutato
26-07-2004, 11:13
Originariamente inviato da adarkar
se nella regex ci metti un bel paio di:
\/ ..... \/
dopo puoi riferirti a ci˛ che Ŕ contenuto lý in mezzo con \1
x˛ i dettagli esatti al momento non te li so dire, mi deimentico sempre e ogni volta che lo faccio mi rileggo il man :stordita: :stordita:
cmq se gli dai un'occhio si capisce rapidamente come fare

eh eh ..

Belle le regex, e' praticamente la prima volta che le uso. Sono riuscito a isolare splendidamente quello che volevo, un bel unique, e un bel sort e ho il mio elenco ... :D

Se questo lavoro va in malora ora ho uno strumento per lo spam! Pazzesco.

Python mi fa in[a-z]re perche' usa i TAB... dopo aver perso un lavoro da 300 linee di codice solo perche' ho fatto la ca[a-z]ta di cambiare editor ho giurato a me stesso di non usarlo piu'. :cry:

KornShell
26-07-2004, 11:20
La comunitÓ Python italiana si dispiace di aver perso uno dei suoi utilizzatori :cry:

Niente fiori ma opere di bene :D




grattati un p˛ ... ehehhe
scherzo ovviamente, ciao :ciauz:

Mutato
26-07-2004, 11:36
Originariamente inviato da KornShell
grattati un p˛ ... ehehhe
scherzo ovviamente, ciao :ciauz:

No, no. Mi devo grattare forte. Con Python ho sempre avuto una sfiga mortale... pero', ammetto, e' un ottima calcolatrice!

>>> Media = 29.19
>>> Tesi = (Media*11)/3
>>> print Tesi

Una vera figata :D

Loading