Repository 32bit  Forum
Repository 64bit  Wiki

espressione regolare & riconoscimento stringa

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.

Re: espressione regolare & riconoscimento stringa

Messaggioda targzeta » mer giu 17, 2009 11:07

tgmx ha scritto:...A te funziona quell'espressione?

No, stavo cercando qualcos'altro :)

Emanuele
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
Avatar utente
targzeta
Iper Master
Iper Master
 
Messaggi: 6155
Iscritto il: gio nov 03, 2005 14:05
Località: Carpignano Sal. (LE) <-> Pisa
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM

Re: espressione regolare & riconoscimento stringa

Messaggioda tgmx » mer giu 17, 2009 11:08

spina ha scritto:
tgmx ha scritto:...A te funziona quell'espressione?

No, stavo cercando qualcos'altro :)

Emanuele


bene :D

In ogni caso grazie mille della collaborazione! :)
Avatar utente
tgmx
Linux 3.x
Linux 3.x
 
Messaggi: 1330
Iscritto il: ven apr 28, 2006 13:40
Località: Ancona
Slackware: 13.37
Desktop: KDE 4

Re: espressione regolare & riconoscimento stringa

Messaggioda targzeta » mer giu 17, 2009 11:15

Questa dovrebbe andar bene:
Codice: Seleziona tutto
'^[0-9]\{7\}\([0-9]*[ ]*\)\{8\}'
Almeno 7 cifre e poi 8 tra cifre e spazi con prima le cifre, che dici?

Emanuele
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
Avatar utente
targzeta
Iper Master
Iper Master
 
Messaggi: 6155
Iscritto il: gio nov 03, 2005 14:05
Località: Carpignano Sal. (LE) <-> Pisa
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM

Re: espressione regolare & riconoscimento stringa

Messaggioda tgmx » mer giu 17, 2009 11:24

spina ha scritto:Questa dovrebbe andar bene:
Codice: Seleziona tutto
'^[0-9]\{7\}\([0-9]*[ ]*\)\{8\}'
Almeno 7 cifre e poi 8 tra cifre e spazi con prima le cifre, che dici?

Emanuele


A te così funziona?

Secondo me è quel:
( ... ){8}
che non viene interpretato come vogliamo.
Se così andasse bene allora si potrebbe anche scrivere:
([0-9]{7,}[\\ ]{0,}){15}
ma non va... :?
Avatar utente
tgmx
Linux 3.x
Linux 3.x
 
Messaggi: 1330
Iscritto il: ven apr 28, 2006 13:40
Località: Ancona
Slackware: 13.37
Desktop: KDE 4

Re: espressione regolare & riconoscimento stringa

Messaggioda targzeta » mer giu 17, 2009 11:32

E' strano, prende correttamente le stringhe che iniziano con 7 cifre seguite da altre cifre più spazi, solo che il match porta anche a più o meno di 15 caratteri. Sembra davvero che l'{8} non faccia il suo lavoro.

Emanuele
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
Avatar utente
targzeta
Iper Master
Iper Master
 
Messaggi: 6155
Iscritto il: gio nov 03, 2005 14:05
Località: Carpignano Sal. (LE) <-> Pisa
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM

Re: espressione regolare & riconoscimento stringa

Messaggioda tgmx » mer giu 17, 2009 12:26

spina ha scritto:E' strano, prende correttamente le stringhe che iniziano con 7 cifre seguite da altre cifre più spazi, solo che il match porta anche a più o meno di 15 caratteri. Sembra davvero che l'{8} non faccia il suo lavoro.

Emanuele


A questo punto ripiegherò per la soluzione con gli "OR"... peccato :)

Comunque grazie di nuovo a tutti! ( anche per la lezione sui congiuntivi ;) )
Avatar utente
tgmx
Linux 3.x
Linux 3.x
 
Messaggi: 1330
Iscritto il: ven apr 28, 2006 13:40
Località: Ancona
Slackware: 13.37
Desktop: KDE 4

Re: espressione regolare & riconoscimento stringa

Messaggioda tgmx » mer giu 17, 2009 14:39

Giusto per completezza confermo che la soluzione con una serie di OR funziona:

Codice: Seleziona tutto
(([0-9]{7}[\\ ]{8})|([0-9]{8}[\\ ]{7})|([0-9]{9}[\\ ]{6})|([0-9]{10}[\\ ]{5})|.....|([0-9]{15}))
Avatar utente
tgmx
Linux 3.x
Linux 3.x
 
Messaggi: 1330
Iscritto il: ven apr 28, 2006 13:40
Località: Ancona
Slackware: 13.37
Desktop: KDE 4

Re: espressione regolare & riconoscimento stringa

Messaggioda Mario Vanoni » mer giu 17, 2009 15:34

echo "1234567 " | grep '^[0-9]\{1,15\}[ ]\{0,15\}'
1234567

A me funziona, se e` quello che cercavi.

Edit:
il forum non permette di trasmettere 1:1 quanto scritto:
echo "1234567 compresi otto spazi"
Mario Vanoni
Iper Master
Iper Master
 
Messaggi: 3174
Iscritto il: lun set 03, 2007 20:20
Località: Cuasso al Monte (VA)
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey

Re: espressione regolare & riconoscimento stringa

Messaggioda ZeroUno » mer giu 17, 2009 16:24

Codice: Seleziona tutto
echo '1234567890     '|cut -c1-15|egrep '^[0-9]{7,15} {0,8}$'

la condizione è che la stringa è lunga 15 o più caratteri (in fondo all'inizio si è parlato di 200); se la stringa è più corta allora non funziona.

01
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg
Codice: Seleziona tutto
1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111
Avatar utente
ZeroUno
Staff
Staff
 
Messaggi: 4304
Iscritto il: ven giu 02, 2006 13:52
Località: Roma / Castelli
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current

Re: espressione regolare & riconoscimento stringa

Messaggioda tgmx » mer giu 17, 2009 16:40

Mario Vanoni ha scritto:echo "1234567 " | grep '^[0-9]\{1,15\}[ ]\{0,15\}'
1234567

A me funziona, se e` quello che cercavi.

Edit:
il forum non permette di trasmettere 1:1 quanto scritto:
echo "1234567 compresi otto spazi"


Quella soluzione non funziona perchè accetterebbe tra l'altro anche la situazione estrema di:
Codice: Seleziona tutto
"123456789012345               "

cioè 15 cifre e 15 spazi...

mentre a me interessa che la somma di caratteri e spazi sia 15.
Avatar utente
tgmx
Linux 3.x
Linux 3.x
 
Messaggi: 1330
Iscritto il: ven apr 28, 2006 13:40
Località: Ancona
Slackware: 13.37
Desktop: KDE 4

Re: espressione regolare & riconoscimento stringa

Messaggioda Mario Vanoni » mer giu 17, 2009 17:40

tgmx ha scritto:
Mario Vanoni ha scritto:echo "1234567 " | grep '^[0-9]\{1,15\}[ ]\{0,15\}'
1234567

A me funziona, se e` quello che cercavi.

Edit:
il forum non permette di trasmettere 1:1 quanto scritto:
echo "1234567 compresi otto spazi"


Quella soluzione non funziona perchè accetterebbe tra l'altro anche la situazione estrema di:
Codice: Seleziona tutto
"123456789012345               "

cioè 15 cifre e 15 spazi...

mentre a me interessa che la somma di caratteri e spazi sia 15.


Allora la tua domanda originale non era corretta/precisa,
devi fare piu` passi come dice zerouno,
FIRST=`grep come detto | cut -c 1-15`
poi grep ${FIRST}
Sorry, ma le RE non possono tutto.
Mario Vanoni
Iper Master
Iper Master
 
Messaggi: 3174
Iscritto il: lun set 03, 2007 20:20
Località: Cuasso al Monte (VA)
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey

Re: espressione regolare & riconoscimento stringa

Messaggioda tgmx » mer giu 17, 2009 19:01

ZeroUno ha scritto:
Codice: Seleziona tutto
echo '1234567890     '|cut -c1-15|egrep '^[0-9]{7,15} {0,8}$'

la condizione è che la stringa è lunga 15 o più caratteri (in fondo all'inizio si è parlato di 200); se la stringa è più corta allora non funziona.

01


Questa era una possibilta che avevo considerato ma c'è appunto il caso che la stringa sia più corta (o comunque vorrei gestire tutte le possibilità).

Da quanto è emerso in questa discussione sembra proprio che l'unica possibilita sia utilizzare una serie di OR:
Codice: Seleziona tutto
(([0-9]{7}[\\ ]{8})|([0-9]{8}[\\ ]{7})|([0-9]{9}[\\ ]{6})|([0-9]{10}[\\ ]{5})|.....|([0-9]{15}))

per non lasciare fuori nessun caso... almeno credo :)
Avatar utente
tgmx
Linux 3.x
Linux 3.x
 
Messaggi: 1330
Iscritto il: ven apr 28, 2006 13:40
Località: Ancona
Slackware: 13.37
Desktop: KDE 4

Precedente

Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

cron