View previous topic :: View next topic |
Author |
Message |
heXen Guru
Joined: 21 Jun 2004 Posts: 320
|
Posted: Tue Jul 06, 2004 5:08 pm Post subject: [OT] aiuto con le regex |
|
|
ciao
devo scrivere delle espressioni regolari per cercare nel dizionario italiano parole con le lettere in posizione data, tipo 123114 (a cifra uguale corrisponde lettera uguale) ma ho dei problemi
Nel caso in esempio se faccio
Code: |
^([a-z])([a-z])([a-z])\1\1[a-z]$ |
spesso mi ritornano parole più lunghe di 6 lettere mentre la struttura della regex lo impone, poi i quantificatori {n} non mi moltiplica la cosa di prima n volte ma n-1, e poi mi sembra strano che non ci sia un operatore AND nelle regex.
Tutto questo con grep -E
ci capite qualcosa? |
|
Back to top |
|
|
FonderiaDigitale Veteran
Joined: 06 Nov 2003 Posts: 1710 Location: Rome, Italy
|
Posted: Tue Jul 06, 2004 10:51 pm Post subject: |
|
|
se lanci grep da bash, devi sostituire ( con \( e | con \|.
poi calcola che le regexp in bash sono abbastanza stupide, il mio consiglio e' di farlo almeno in python o tcl , che e' abbastanza semplice anche se non conosci il linguaggio.
cmq non ho capito il tuo esempio. spiegati meglio.. _________________ Come disse un amico, i sistemisti sono un po' come gli artigiani per l'informatica
|
|
Back to top |
|
|
heXen Guru
Joined: 21 Jun 2004 Posts: 320
|
Posted: Wed Jul 07, 2004 9:49 am Post subject: |
|
|
beh l'esempio era un po' sparato perché non avevo i comandi e l'output sottomano
allroa:
devo trovare nel vocabolario italiano le parole nella forma abccb
grep -E '^[a-z]([a-z])([a-z])\2\1$' dizionario.txt
non mi ritorna nulla, mentre
grep -E '^......$' dizionario.txt | grep -E '[a-z]([a-z])([a-z])\2\1'
me ne ritorna un po'.
Domande:
Perche` nella prima regex non ha "capito" che doveva essere lunga 5 lettere?
Poi ancora, nel primo "membro" del pipe perche` se avessi messo n punti mi avrebbe trovato le parole non di n lettere ma di n-1?
Poi altra domanda che mi ha portato alla necessita` di usare AND:
Tra le parole ritornate ho alcune tipo ABAAB mentre io voglio che la terza e
la quarta lettere siano sì uguali fra loro ma diversa dalla prima |
|
Back to top |
|
|
r_howie n00b
Joined: 19 Apr 2002 Posts: 36 Location: Lisbon, Portugal
|
Posted: Wed Jul 07, 2004 11:16 am Post subject: |
|
|
Scusate, ma siamo sicuri che una regexp possa fare qualcosa del genere?
Per vedere che la quinta lettera è uguale alla seconda, questo vorrebbe dire che la macchina deve tenere "memoria", strada facendo, di qual era la seconda lettera della parola. Quindi ha bisogno di una pila. E questo non è in contraddizione con la definizione stessa di macchina a stati finiti, ovvero linguaggi regolari, ovvero regexp?
Non sono sicuro di non aver detto una bestialità! _________________ Travel is the cure for racism, bigotry and prejudice. Ciao, -Giovanni. |
|
Back to top |
|
|
FonderiaDigitale Veteran
Joined: 06 Nov 2003 Posts: 1710 Location: Rome, Italy
|
Posted: Wed Jul 07, 2004 11:19 am Post subject: |
|
|
si lo puo' fare. ma stai chiedendo troppo a bash. non ha operatori estesi.
questa cosa si fa facilmente con python.
Cerca su google 'dive into python' , ci sono anche degli esempi su questo. _________________ Come disse un amico, i sistemisti sono un po' come gli artigiani per l'informatica
|
|
Back to top |
|
|
randomaze Bodhisattva
Joined: 21 Oct 2003 Posts: 9985
|
Posted: Wed Jul 07, 2004 11:50 am Post subject: |
|
|
FonderiaDigitale wrote: | si lo puo' fare. ma stai chiedendo troppo a bash. non ha operatori estesi.
questa cosa si fa facilmente con python. |
Sostanzialmente concordo, se non ho cpaito male con un (bel) pò di impegno si potrebbe fare anche con bash, ma il risultato sarebbe molto inferiore (e probabilmente meno flessibile) a quello che si potrebbe avere con perl o con python in poche righe. _________________ Ciao da me! |
|
Back to top |
|
|
heXen Guru
Joined: 21 Jun 2004 Posts: 320
|
Posted: Wed Jul 07, 2004 11:57 am Post subject: |
|
|
il python un po' lo conosco, quando l'avevo studiato ricordo di aver trovato un articolo sulle regex, ora lo cerco e lo metto in pratica |
|
Back to top |
|
|
randomaze Bodhisattva
Joined: 21 Oct 2003 Posts: 9985
|
Posted: Wed Jul 07, 2004 12:00 pm Post subject: |
|
|
heXen wrote: | il python un po' lo conosco, quando l'avevo studiato ricordo di aver trovato un articolo sulle regex, ora lo cerco e lo metto in pratica |
Nei bookmark io ho questo: Text Processing in Python... non so se faccia al caso tuo! _________________ Ciao da me! |
|
Back to top |
|
|
heXen Guru
Joined: 21 Jun 2004 Posts: 320
|
Posted: Wed Jul 07, 2004 6:47 pm Post subject: |
|
|
dall'articolo:
regex [...] that you may see used in some older Python code. While there are still a few, limited advantages to regex , they are minor and it is not worth using in new code
perché?? |
|
Back to top |
|
|
FonderiaDigitale Veteran
Joined: 06 Nov 2003 Posts: 1710 Location: Rome, Italy
|
Posted: Wed Jul 07, 2004 7:46 pm Post subject: |
|
|
randomaze wrote: |
Sostanzialmente concordo |
e ci fosse mai una volta che lo sei del tutto _________________ Come disse un amico, i sistemisti sono un po' come gli artigiani per l'informatica
|
|
Back to top |
|
|
randomaze Bodhisattva
Joined: 21 Oct 2003 Posts: 9985
|
Posted: Wed Jul 07, 2004 8:41 pm Post subject: |
|
|
FonderiaDigitale wrote: | e ci fosse mai una volta che lo sei del tutto |
beh ti eri perso il perl...
@heXen non so perché l'articolo dica che il modulo re é brutto e vecchio! Se ho tempo domani provo a dargli una letta. IMHO per quello che serve a te va benissimo _________________ Ciao da me! |
|
Back to top |
|
|
|